使用 Azure 服务总线向客户端发送消息 - 主题

Send messages to clients using Azure Service Bus - Topics

使用 Azure 服务总线 - 主题,我想实施一个解决方案,其中一旦生产者将消息发送到主题(如队列),消息就会 sent/notified 发送给最终消费者。

我了解主题作为 Pub/Sub 模型工作,其中订阅者需要从订阅中读取消息。但我正在寻找一种类似于 Queue 的解决方法(当收到任何消息时它会触发 Web 作业/服务)。

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

首先,我想知道服务总线主题是否是合适的选择?接下来,如果可能的话,best/better 方法是什么?

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

需要说明的是,服务总线中的队列和主题是不同的。如您所述,主题在 publish/subscribe 场景中很有用。

既然您正在寻找被触发的东西,Azure 函数可能就是您所需要的。

Azure Functions supports trigger and output bindings for Service Bus queues and topics

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

我认为@William 是对的,您可以use/attach 订阅其他进程来完成您想要做的事情。

他提到了 Azure Functions,这是一个很好的工具,我也想推荐 Azure Logic Apps,以防您想根据收到的消息做出一些决定。

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

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

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

然后回答你的问题

First, I want to know if Service Bus Topic is right option to go with?

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

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

你唯一需要注意的是,当你没有收到通知时你会做什么?您需要考虑这种情况。

来自上面的讨论。

Azure 函数 Queues/Topics

不考虑队列或主题。您可以同时触发 azure 函数。该函数将处理消息。现在您可以在同一个函数 SendEmail()、sendPhoneNotifcation() 中创建两个方法,并使用 C# 任务并行库对任务进行并行化。所以同一个函数将并行执行这两个任务。

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