我的使用者中返回的 Azure 服务总线队列序列号与生产者中返回并在 Azure 门户中显示的序列号不同?

use*_*050 5 azure azureservicebus azure-servicebus-queues

当我使用服务总线生产者代码(如下)在 Azure 门户和我的应用程序中创建计划服务总线消息时,我会收到一个序列号。我将其保存在我的数据库中。

问题- 当我的服务总线使用者代码由计划消息出列触发时,序列号与服务总线生产者代码和通过 Azure 门户最初提供给我的序列号不同。

如图所示,其中“13”是 Azure 门户屏幕中显示的序列号。

在此输入图像描述

这是接收预定消息的代码,您可以看到序列号不同!

在此输入图像描述

这是我的消费者代码(不认为这很重要)

    private async Task MessageHandler(ProcessMessageEventArgs args)
    {
        string body = args.Message.Body.ToString();
        JObject jsonObject = JObject.Parse(body);
        var eventStatus = (string)jsonObject["EventStatus"];

        await args.CompleteMessageAsync(args.Message);

        // fetch row here by sequence number
        // edit some data from entity, then save
        int result = await dbContext.SaveChangesAsync();

    }
Run Code Online (Sandbox Code Playgroud)

这是我的生产者代码

    public async Task<long> SendMessage(string messageBody, DateTimeOffset scheduledEnqueueTimeUtc)
    {
        await using (ServiceBusClient client = new ServiceBusClient(_config["ServiceBus:Connection"]))
        {
            ServiceBusSender sender = client.CreateSender(_config["ServiceBus:Queue"]);

            ServiceBusMessage message = new ServiceBusMessage(messageBody);

            var sequenceNumber = await sender.ScheduleMessageAsync(message, scheduledEnqueueTimeUtc);
            
            return sequenceNumber;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Tho*_*mas 7

文档中:

计划消息的 SequenceNumber 仅当消息处于此状态时才有效。当消息转换到活动状态时,消息将被附加到队列中,就像在当前时刻已入队一样,其中包括分配新的 SequenceNumber。