使用Azure Service Bus向客户端发送消息-主题

时间:2019-04-29 15:22:43

标签: azure azureservicebus azure-servicebus-topics

使用Azure Service Bus-主题,我想实现一个解决方案,一旦生产者将消息发送到主题(如队列),就将消息发送/通知给最终使用者。

我了解主题是发布/订阅模型,订阅者需要从订阅中读取消息。但是我正在寻找一种与Queue类似的变通方法(在收到任何消息时会触发Web作业/服务)。

我几乎没有什么想法 1.在订阅中使用自动转发将消息转发到队列,但是我再次认为这是否扼杀了主题的目的 2.安排一个工作来处理这些请求,但是我想我是否要延迟该过程

首先,我想知道Service Bus Topic是否是正确的选择?接下来,如果可以实施解决方法,什么是最佳/更好的方法?

PS:我必须发送包含信息的消息-我猜我不能使用中继

3 个答案:

答案 0 :(得分:1)

需要明确的是,服务总线中的队列和主题是不同的。如您所述,主题在发布/订阅方案中很有用。

由于您要查找触发的内容,因此可能需要Azure功能。

  

Azure Functions支持Service Bus的触发和输出绑定   队列和主题

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus

答案 1 :(得分:0)

我认为@William是正确的,您可以使用/附加其他过程来进行订阅。

他提到了Azure功能,这是一个很好的工具,我也想建议Azure Logic应用程序,以防您想根据收到的消息做出一些决定。

使用Azure Logic应用程序,您可以创建逻辑工作流并使用此工具提供的连接器集成许多服务。

您将在以下位置找到更多信息:

https://docs.microsoft.com/en-us/azure/connectors/connectors-create-api-servicebus

回答您的问题

  

首先,我想知道Service Bus Topic是否是正确的选择?

快速答案是肯定的,使用消息传递模式是创建可靠解决方案的最佳方法。

在您的情况下,您还希望在收到消息后通知另一个系统。

您唯一需要知道的是,每当没有收到通知时,您将做什么?您需要考虑这种情况。

答案 2 :(得分:0)

来自上面的讨论。

具有队列/主题的Azure功能

无论队列或主题如何。您可以同时触发两者的天蓝色功能。此功能将处理消息。现在,您可以在同一函数SendEmail(),sendPhoneNotifcation()中创建两个方法,并使用C#任务并行库对任务进行并行化。因此,相同的功能将同时完成两个任务。

每次收到消息时,都会触发您的功能。处理消息并通知用户。好处是,如果您有大量消息通过队列,此功能将自动扩展。