Search code examples
azureservicebusazure-servicebus-queues

How can I get the sequence number of mssg from ServiceBusReceiver ReceiveMessageAsync


How do I get the sequence number of a message I retrieve from a service bus queue

ServiceBusReceivedMessage receivedStateMessage = await busreceiver_State.ReceiveMessageAsync();

(note-not the message received by ServiceBusTrigger binding)?

[FunctionName("TelemetryListenerCalculateAlgoPostNewState")]
    public static async Task TelemetryListenerCalculateAlgoPostNewState(
        [ServiceBusTrigger(busTelemetryQueueName,Connection = "ServiceBusConnection")]
        string [] receivedTelemetryMessages,
        Int32 [] DeliveryCountArray,
        DateTime [] EnqueuedTimeUtcArray,
        string [] MessageIdArray,
        Int64[] SequenceNumberArray,
        ILogger log)
    {
        await using ServiceBusClient bus_client = new ServiceBusClient(ServiceBusConnection);
        var newStateJson = "";
        Algorithm_SaveStateVariables priorState = new Algorithm_SaveStateVariables();
        List<IncomingTelemetry> retrievedQueuedTelemetryList = new List<IncomingTelemetry>();

        #region Receive prior state message
        ServiceBusReceiverOptions stateReceiverOptions = new ServiceBusReceiverOptions();
        stateReceiverOptions.PrefetchCount = 1;
        stateReceiverOptions.ReceiveMode = ServiceBusReceiveMode.PeekLock;
        ServiceBusReceiver busreceiver_State = bus_client.CreateReceiver(busStateQueueName, stateReceiverOptions);
        ServiceBusReceivedMessage receivedStateMessage = await busreceiver_State.ReceiveMessageAsync();

thank you


Solution

  • Since you need all the lower-level information about the messages, you might consider receiving an array of ServerBusReceivedMessage. With that, you'll have access to all the information about each message.