0

私はいくつかのデータを処理し、そのデータをAzureサービスバストピックにプッシュするAzure Functionappを持っています。javascriptを使用してazure functionappでservicebusトピックセッションを使用する方法

servicebusトピックのサブスクリプションでセッションを有効にする必要があります。私は、javascriptのfunctionapp APIを使用してセッションIDを設定する方法を見つけることができないようです。ここで

は私の機能アプリから変更された抽出物である:

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(); 
} 

しかし、セッションIDは、すべての設定を取得していないようです。どのようにこれを可能にする可能性についての任意のアイデア?

deadletter error

message properties

答えて

1

私は私の機能にセッションIDをテストし、私はメッセージのセッションIDプロパティを設定し、サービスバスエクスプローラで表示することができます。ここに私のサンプルコードです。

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); 
    } 
}); 

ここにテスト結果があります。

enter image description here

あなたがトピックとサブスクリプションを作成したときに小分けして、セッションを有効にしていることを確認してください。

enter image description here

+0

これは私がやろうとしたものである機能のアプリが提供するservicebusへのコネクタに組み込まれたを使用していません。 – tensai

+0

これは、ノードでの出力バインディングを使用する際の制限の1つであることを伝えてください。他の言語でのタイプ情報が失われるためです。現在、回避策としてServiceBus sdk for nodeをノードとして使用してください。詳細については、次の返信を参照してください。 http://stackoverflow.com/a/42118163/7597097 – Amor

+0

ありがとうございました。 :-) – tensai

関連する問題