首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AzureServiceBus -以保证的顺序发布消息

AzureServiceBus -以保证的顺序发布消息
EN

Stack Overflow用户
提问于 2022-02-04 12:22:53
回答 1查看 52关注 0票数 0

当将消息发布到服务总线主题时,如果我遍历3条消息:

{ A、B、C}

每次都在等待的SendAsync(),我希望它们按顺序发布到主题中:

{ A、B、C}

代码语言:javascript
复制
public async Task PublishMessage(string topic, string json, string sessionId)
{
       var topicClient = new TopicClient(_connectionString, topic);
       var busMessage = new Message(Encoding.UTF8.GetBytes(json));
       busMessage.SessionId = sessionId;
       await topicClient.SendAsync(busMessage);
}

许多员工表示,情况并不一定如此,而且在某些情况下(例如,大型消息),这种发布顺序不能得到保证。我自己从来没有遇到过这样的情况,ASB难道不保证发布命令,即使像上面那样等待消息的发送?

本文https://devblogs.microsoft.com/premier-developer/ordering-messages-in-azure-service-bus/使用了以下引语:

虽然Azure服务总线允许FIFO方法(先进先出),但我们不能保证按我们希望它们被处理的顺序输入消息。

这一切对我来说都很令人费解,因为我认为SendAsync()只有在消息被添加到主题之后才会返回一个成功的结果。我们真的需要围绕这一点写一些复杂的层次来管理它吗?

请注意,这只涉及到发布的消息,我们使用SessionIds来处理消费。

EN

回答 1

Stack Overflow用户

发布于 2022-02-04 12:55:04

即使您等待一条消息被发送,然后只发送下一条消息,FIFO也无法保证。这是由于可能的原因太多。为了确保您得到有保证的排序,您需要使用启用session的队列或订阅。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70986334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档