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

标签 azure message-queue azureservicebus

我们正在评估“Azure 服务总线”,以在 Web 服务器和应用服务器之间使用请求响应模式。我们计划有两个队列:

请求队列

响应队列

Web服务器将消息推送到请求队列并订阅响应队列。 通过比较MessageID和CorrelationId,可以接收返回的响应,然后将响应发送回浏览器。

但是通过云,使用弹性扩展,我们可以增加/减少 Web 服务器(和应用程序服务器)实例。 我们想知道这种模式在这里是否能发挥最佳作用。

为了完成这项工作,我们必须有一个请求队列和多个主题(每个 Web 服务器实例一个)。

这有两个缺点:

随着网络服务器实例的增加/减少,我们将有 也可以创建/删除主题。

所有消息都会推送到 所有主题。因此,每条消息都会被整个网络处理 服务器。这不是一个有效的方法。

请分享您的想法。

提前致谢

最佳答案

当您横向扩展端点时,您不希望具有实例关联性。您希望依赖竞争的消费者,而不关心端点的哪个实例处理消息。

例如,如果您收到响应并将其写入数据库,那么您很可能不关心端点的哪个实例写入了数据。但是,如果您有一些内存中状态或任何其他信息,仅适用于发起请求的端点,并且处理回复消息需要该信息,那么您就具有实例关联性,需要删除它或使用允许解决该问题的技术。例如,带有背板的 SignalR 之类的东西可以向所有 Web 端点实例传达回复消息。

请注意,理想情况下您应该尽可能避免实例关联。

关于azure - 使用 Azure 服务总线的可扩展请求响应模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45956830/

相关文章:

azure - 如何从 Azure 认知服务访问 Azure 存储容器

sql - 如何在 Azure 流分析中聚合多个数组

Azure 应用程序网关与 Let 加密

amazon-web-services - AWS SNS 中的延迟和吞吐量是否足以取代用于发布/订阅的专用 MQ?

c - 为什么在 POSIX 中创建消息队列时出现错误 "Cannot Allocate Memory"?

java - 将数据发送到队列并在同一函数中监听数据

Azure服务总线队列: Can I manage/cancel scheduled messages?

c# - 服务总线根据内容过滤消息

azure - 如何在 Quarkus 中连接到 Azure ServiceBus

.net - 如何在 Azure 应用程序中使用 MSMQ