【问题标题】:How can I get Azure Service Bus to work in a FIFO manner?如何让 Azure 服务总线以 FIFO 方式工作?
【发布时间】:2018-11-14 19:32:38
【问题描述】:

我们没有使用 Azure 服务总线的主题(我理解 has additional requirements to support ordering,我的理解是每个队列都应该恢复以 FIFO 方式运行;但是,从今天分析我们的日志来看,我们已经15442 条消息中有 384 条以与入队时不同的顺序出队

为了举例说明,我们有两条消息,d4350a6e68ad4c9fb1fb9ccebd766590 和 0e19fbd29ffd4c4693fff6dd57e4f683;这些分别在 2018-11-14 09:27:31.8870000 和 2018-11-14 09:27:35.5950000 入队(所以 0e... 比 d4 晚了 4 秒...)但是,它们在 2018- 11-14 09:30:12.0320000 和 2018-11-14 09:29:57.4850000 分别(所以 d4... 比 0e... 晚了 15 秒)。在此时间范围内,我们只有一个活跃的主机同时进行入队和出队。

虽然从人类的角度来看,这方面的时间相对接近,但我们已经看到了

据我了解,队列是,好吧,队列,我有点惊讶我看到这种行为 - 我需要做任何额外的魔法来确保它们按照它们入队的顺序出队吗?

作为参考,入队的代码看起来有点像:

var brokeredMessage = new BrokeredMessage(objectToQueue, new DataContractJsonSerializer(typeof(T)));            

var queueClient = QueueClient.CreateFromConnectionString(connectionString);
queueClient.RetryPolicy = new RetryExponential(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(5), 5);
queueClient.Send(brokeredMessage);

我们正在使用服务总线触发器对 Azure Webjob 进行出列

【问题讨论】:

    标签: c# azure azureservicebus azure-webjobs


    【解决方案1】:

    这是预期的行为。为确保消息按顺序处理,您应该使用Sessions in Service Bus Queues

    这将允许您按照消息排队的顺序处理消息。

    【讨论】:

    • 如果我没看错的话,我好像不能再在网络作业上使用服务总线触发器了?
    猜你喜欢
    • 2015-04-26
    • 1970-01-01
    • 2022-08-11
    • 2021-12-25
    • 1970-01-01
    • 2021-10-31
    • 2018-03-10
    • 2021-11-13
    • 2013-05-27
    相关资源
    最近更新 更多