gpt4 book ai didi

Azure 服务总线 - 按有保证的顺序发布消息

转载 作者:行者123 更新时间:2023-12-03 07:08:20 25 4
gpt4 key购买 nike

向服务总线主题发布消息时,如果我循环 3 条消息:

{A、B、C}

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

{A、B、C}

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来处理消费。

最佳答案

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

关于Azure 服务总线 - 按有保证的顺序发布消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70986334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com