问题标签 [request-response]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1179 浏览

c# - Wait for Mass Transit saga to finish

I'm trying to create a saga that returns some result to the caller, just like the Request/Response pattern. I'm able to start the saga if I call the Send method, but not by submitting a Request.

So, the saga logic runs fine, but it doesn't return anything to the client.

Or submitting a Request gets processed by it's consumer and returns a response to the client, but never starts the saga.

UPDATE: The answer to masstransit deferred respond in sagas doesn't seem to apply to my question for two reasons:

1) I wasn't able to start the saga by calling the Request method;

2) If I call the Send method to send the request and, later on, send the response, the caller thread does not wait for the response to get back before continuing to the next line of code;

[END OF UPDATE]

Please find the complete code here. And below are the more relevant fragments:

Here is the saga class:

This starts the saga but doesn't wait for it to finish and respond:

And this waits for a response but doesn't involve the saga at all:

How can I have the caller start the saga and wait for it to finish and do something with its reponse?

0 投票
1 回答
149 浏览

mqtt - MQTT 中的请求/响应是否可以实现单呼叫、多应答模式?

在单呼叫多应答模式中,您可以发送一个请求并接收多个对此请求的响应。一个 mqtt 客户端可以发送一个带有响应主题和一些相关数据的请求。一个客户端可以用多个响应来回答这个请求(每个响应都包括第一个也是唯一一个请求的相关数据),还是协议错误?

0 投票
1 回答
236 浏览

apache-kafka - 使用 kafka 和键值存储的请求-响应

TLDR:有一个请求/响应模式。当前请求通过 activemq 队列完成,响应通过 memcached 键值存储(由前端轮询)完成。由于各种原因想迁移到 kafka,想知道我们是否可以重新设计响应路径以不使用 memcached。

我试图了解以下问题的最佳实践系统设计。

我们有一个生成需要大量处理的请求的前端。该应用程序需要响应才能前进。有时我们需要撤消/后退(这会让你回到之前的状态)。有一组后端可以执行繁重的处理步骤。

在我们当前的设置中,前端将请求推送到队列中(当前为 activemq),后端尽可能处理队列中的项目并将结果存储在键值存储(memcached)中,键是来自消息的 UUID队列(它本身就是一个唯一的会话 id + 非唯一的步骤 id)。前端正在轮询存储以获取消息的 UUID。这样做的好处是前端可能会丢失连接/等,但只要保留会话 ID,我们就可以 ping 键值存储以获得我们需要的结果。我们有时还需要后退/撤消操作,我们可以在键值存储中返回结果(因为每个步骤都有自己的 UUID 并且所有 UUID 都是已知的)。

然而,在未来,我们希望能够至少部分通过队列进行响应,这样我们就可以拥有一些分析工具作为请求和响应的消费者。“最小的改变”是让响应生产者推入队列并让 memcached 成为消费者之一。但也许有更好的方法。我们也在考虑从 activemq 切换到 Kafka,因为这会给我们带来可重玩性(但我们没有使用 kafka 的经验)。

看看 Kafka,它看起来像是要获得一条特定的消息,您需要扫描整个分区,有没有更简单的方法来检索特定的消息?我们是否为每个交互序列生成一个主题?如果我们想重播但不知道偏移量,我们有什么办法(除了查看很多消息)?我们的负载非常小(约 1 百万条消息/天),所以我想任何方法都可以,但最佳实践是什么(臭名昭著,如果我们扩大规模会怎样)?

0 投票
2 回答
1168 浏览

c# - Net Core:为每个 API 操作创建响应类?

我们的软件架构师要求所有 API 操作都有自己的响应类,因为每个响应都可能略有不同。因此,我们基本上将 Product DTO 包装在 Base Response 类中,并在需要时稍微定制。这是良好的架构实践吗?我开始编程,它似乎有点重复。此外,什么是更好的最佳选择呢?

产品类别:

基本响应:

个人回应:

0 投票
2 回答
920 浏览

c# - Net Core:以动态可变的方式将 DTO 包裹在响应模式中

软件要求要求所有 DTO 包含自己的响应类。因此开发人员基本上将 Product DTO 包装在 Base Response 类中。我们有完整的类领域列表,需要数百个产品、销售、客户等类都在做同样的事情,如下所示。客户端不想包装,BaseResponse<Product> or BaseResponse<IEnumerable<ProductDto>因为它是嵌套/不可读的。

是否有包装/创建变量类和可读的方法,而无需手动编写 100 个类(可能是扩展方法、动态类、变量,不确定,对任何方法开放)?

注意:响应类可以不同,所以要给程序员选择创建自动化标准类,或者创建自己定制的手动类,所以两个选项可以存在。

当前代码:

产品 DTO 类:

基本响应:

个人回应:

建议代码:

所以代码现在看起来像这样,

这是一个好方法,架构合理,还是应该应用其他方法?这可能不起作用,因为任何中间层发送/接收响应都需要引用为 BaseResponse< IEnumerable< ProductDto > 等。

顺便说一句,如果走这条路,这里会收到编译错误

更新: 这就是我们使用 DTO 和响应的方式

0 投票
2 回答
7027 浏览

c# - DTO和响应对象之间的区别?

软件架构中的响应对象和 DTO 有什么区别?假设我想获取目录中的产品列表。

如果 ProductDTO 是这样,那么 Product Response 类有何不同?产品响应通常只是带有日期时间、错误日志或 guid 的包装器,还是主要区别是什么?如果没有确切或多个答案,想听听业内的首要原因。

我试着用谷歌搜索这些答案,他们没有这个问题的具体答案,

为各种请求/响应类型重用 DTO 与明确要求/应该返回什么

每层的数据对象(DTO vs Entity vs Response 对象)

更新:

试图验证答案。似乎 Rahul 的答案是回答 Domain object 和 DTO 之间的区别。Thought Response 是 DTO 的封装,不确定是否属实-

http://themoderndeveloper.com/the-modern-developer/requesting-a-response/

现在在这里发布:

https://softwareengineering.stackexchange.com/questions/398783/what-is-difference-between-dto-and-response-object

0 投票
0 回答
33 浏览

asp.net - ASP.NET Web 窗体将字符串下载为文件而不干扰初始请求

在我的 ASP.NET Web 窗体应用程序中,我必须在网页上执行操作后立即将字符串下载为文件。流程如下:

  1. 执行初始操作(单击按钮)
  2. 它会打开一个弹出窗口,其中需要用户名和密码。
  3. 填写用户名和密码
  4. 执行第二个操作(在弹出窗口内单击按钮)

现在,在第二个操作完成后,我希望我的页面重新加载并开始将我的字符串下载为文件。

如果我在下面的响应中写下我的字符串,文件会被下载,但弹出窗口不会关闭。

Response.Write(mystring);

我尝试了这些方法:

  1. /li> 2.
  1. /li>

所有这些版本都会下载我的文件,但会结束请求并且我的弹出窗口不会关闭。

此外,我使用的弹出窗口是一个包含 iframe 的控件。

谢谢!

0 投票
1 回答
1089 浏览

google-cloud-platform - 如何在 Google Cloud PubSub 上实现请求-响应模式?

我有多个客户端 A(主应用程序)和多个客户端 B(支付服务)。

如果我从客户端 A 发布一条消息,该消息将在客户端 B 上处理和回答(在另一个主题中发布答案),如何在客户端 A 上捕获此答案?

问题是客户端 A 有多个实例,所以我不能保证触发请求的完全相同的实例会收到响应(PubSub 会随机选择一个实例)。

看到像 RabbitMQ 这样的其他代理有“回复”选项。Google PubSub 上有类似的东西吗?

这样,我可以在客户端 A 上模拟“同步”操作,并且仅在处理/响应完成时回复用户,而不是每次都在前端处理此检查。

谢谢!

0 投票
1 回答
1422 浏览

.net-core - 在公共交通中使用带有请求/响应的主题

我将 Masstransit dotnet core v6.3.1 与 RabbitMQ v3 一起使用。我的案例是从 api 网关向其他服务发送请求。服务由主题和网关使用每个请求使用不同的主题。我正在尝试将请求/响应与公共交通一起使用。但是 requestClient 将交换类型声明为扇出。我不能改变类型。我想对每个请求使用不同的 routingKey 和请求/响应。我怎样才能做到这一点?

我在网关中使用过:(startup.cs)

(自定义控制器)

我在其他服务(启动)中使用过:

(自定义消费者)

我也尝试先在rabbitmq中声明交换。在我使用交换 Uri 从 clientFactory 创建请求之后。但是我遇到了一个错误,例如“ ...收到'扇出'但当前是'主题'。”

0 投票
1 回答
59 浏览

node.js - response.redirect() 带参数

我想重定向到路径类似于 /users/home/:id 的页面

上面的代码将重定向到/users/home,但我想用参数动态地将它重定向到像'/users/home/1'这样的页面。我该如何解决?用一些例子来解释