Azure 服务总线请求回复模式

Azure Service Bus request reply pattern

我正在尝试使用 Microsoft 文档中描述的请求回复模式 (https://docs.microsoft.com/en-us/azure/service-bus-messaging/message-sessions#request-response-pattern)

"Multiple applications can send their requests to a single request queue, with a specific header parameter set to uniquely identify the sender application. The receiver application can process the requests coming in the queue and send replies on the session enabled queue, setting the session ID to the unique identifier the sender had sent on the request message. The application that sent the request can then receive messages on the specific session ID and correctly process the replies."

据我了解,应该可以从多个应用程序发送一条消息,让接收方处理该消息并发送一个只能由初始发送方接收的响应。

也许我错了,但有点像这样。

这似乎没有记录(仅使用会话进行有序消息处理),我没有运气找到如何实现它。

有人对此有 idea/experience 吗?

我正在使用 .net core 3.1 和 Microsoft azure servicebus 包 (4.1.2)

好的,我花了一些时间才弄清楚,但我想我能够从图中实现设置。

以下是可能对其他人有帮助的过程:

我有一个普通队列(PostNL 队列)和一个启用会话的共享 'applications' 队列

  • 应用程序(例如 App1)使用 QueueClient 并设置唯一的 SessionId 向 PostNL 队列发送消息
  • 接收方通过QueueClient.RegisterMessageHandler
  • 处理传入的消息
  • 接收方处理消息并使用 QueueClient.SendAsync 向应用程序队列发送回复(回复消息的 SessionId 设置为 UniqueSessionId)
  • 发件人使用会话 = SessionClient.AcceptMessageSessionAsync("UniqueSessionId")
  • 发件人可以使用 session.ReceiveAsync 在此会话中开始接收邮件 (监听应用程序队列的所有其他应用程序只要使用其他会话 ID 就不会竞争这些回复消息)