如何配置 Azure 服务总线队列以将消息推送到客户端而不进行轮询?

Posted

技术标签:

【中文标题】如何配置 Azure 服务总线队列以将消息推送到客户端而不进行轮询?【英文标题】:How to configure Azure Service Bus Queues to push messages to clients without polling? 【发布时间】:2019-04-17 08:52:44 【问题描述】:

我是 Azure 服务总线的新手,我发现我需要不断轮询队列消息才能接收它们。但是,我希望队列将消息推送到事物客户端的某种侦听器,而不必轮询消息。

我已阅读到轮询在 Azure 服务总线中是可选的,但没有它我无法找到如何接收消息。

如果可以,请提供帮助。谢谢你

【问题讨论】:

看看这是否有帮助:fabriccontroller.net/…. 我正在使用基于 .Net 核心的应用程序,我认为您的链接描述了与基于 .Net Framework 的应用程序直接相关的内容 【参考方案1】:

我已阅读到轮询在 Azure 服务总线中是可选的,但没有它我无法找到如何接收消息。

如果您开始按需接收,则轮询是可选的。否则,它不是可选的,并且会发生长轮询

我希望队列将消息推送到事物客户端的某种侦听器,而不必轮询消息。

有一种方法可以使用Event Grid integration with Azure Service Bus 实现这一目标。服务总线将发出一个事件来通知等待处理的消息和没有活动的侦听器。这样您的应用程序/系统会做出反应而无需轮询。

请注意,此功能的关键场景是不需要接收器不断轮询消息的少量消息。

【讨论】:

好的,所以在我想如何使用它的上下文中:我想使用微服务架构构建一个应用程序,我对微服务之间通信的理解是它们需要某种消息代理来传达命令、查询和事件。因此,在阅读您的答案后,我的具体问题是:实现此类通信的最佳工具是什么,事件网格或 Azure 服务总线? 感觉就像您要求通过一个不了解系统的人的 SO cmets 来设计您的系统?您不必必须使用一个或另一个。您可以根据自己的需要将这两种服务结合起来。真的取决于用例。以事件为例。事件是通知。如果您需要通知多个外部订阅者,EG 是一个更好的选择。如果您需要构建内部通知并控制所有订阅者,那么 ASB 的 pub/sub 可能会更好。如果您需要命令 (singlerecipientt),它可以是存储队列或 ASB 队列。再次,您的电话。【参考方案2】:

应该是可以的。请查看以下内容以了解如何完成:

Get started with Service Bus topics Get started with Service Bus queues

希望对你有帮助!

【讨论】:

恕我直言,这个答案没有为发布的问题提供解决方案。相反,它提供了有关如何使用 Azure 服务总线队列和主题的一般概述。 不同意,两个链接都提供了有关如何实现“推送”客户端的详细示例。 对不起,我的错!但是,我建议提供相关部分的直接链接(例如docs.microsoft.com/en-us/azure/service-bus-messaging/…)。 我会尝试解决方案并报告。谢谢你的回答 好的,我能够实现文档指定的内容。谢谢你的回答

以上是关于如何配置 Azure 服务总线队列以将消息推送到客户端而不进行轮询?的主要内容,如果未能解决你的问题,请参考以下文章

使用azure服务总线,如何将单个消息发布到多个队列?

读取 Azure 服务总线队列中的所有活动消息

使用 Azure 服务总线的可扩展请求响应模式

使用 Durable Functions 推送到服务总线的消息计数不可靠

从 Array 推送到 Azure 队列覆盖消息?[node.JS]

如何查看 Azure 服务总线队列中的所有消息?