Search code examples
javascriptazuresessionservicebusazure-servicebus-topics

How to use servicebus topic sessions in azure functionapp using javascript


I have an Azure Functionapp that processes some data and pushes that data into an Azure servicebus topic.

I require sessions to be enabled on my servicebus topic subscription. I cannot seem to find a way to set the session id when using the javascript functionapp API.

Here is a modified extract from my function app:

module.exports = function (context, streamInput) {
  context.bindings.outputSbMsg = [];
  context.bindings.logMessage = [];

  function push(response) {
      let message = {
          body: CrowdSourceDatum.encode(response).finish()
          , customProperties: {
              protoType: manifest.Type
              , version: manifest.Version
              , id: functionId
              , rootType: manifest.RootType
        }
        , brokerProperties: {
            SessionId: "1"
        }
    context.bindings.outputSbMsg.push(message);
  }

  .......... some magic happens here.

  push(crowdSourceDatum);
  context.done();
} 

But the sessionId does not seem to get set at all. Any idea on how its possible to enable this?

deadletter error

message properties


Solution

  • I tested sessionid on my function, I can set the session id property of a message and view it in Service Bus explorer. Here is my sample code.

    var connectionString = 'servicebus_connectionstring';
    var serviceBusService = azure.createServiceBusService(connectionString);
    
    var message = {
        body: '',
        customProperties:
        {
            messagenumber: 0
        },
        brokerProperties:
        {
            SessionId: "1"
        }
    };
    
    message.body= 'This is Message #101';
    serviceBusService.sendTopicMessage('testtopic', message, function(error)
    {
        if (error)
        {
            console.log(error);
        }
    });
    

    Here is the test result.

    enter image description here

    Please make sure you have enabled the portioning and sessions when you created the topic and the subscription.

    enter image description here