2016-08-24 8 views
2

基本的には、Azureサービスバス内にトピックとサブスクリプションがあります。node.jsで特定の遅延が発生した後、Azure ServiceBusトピックからメッセージを送信

メッセージが午前11時から午前11時の間にトピックに届いた場合、私の購読者はそれをまだ処理してはなりません。 しかし、14:00 PMに、私は加入者がそれを扱うことを期待します。

トピックフィルタでこれをネイティブに達成する方法はありますか?

フィルタに関する公式ドキュメントには、この種の使用例は記載されていません。
実際、提示されたすべてのサンプルは、約
"この種のメッセージを処理するサブスクライバ、または決して"です。
は私が探しています:
加入者がこの種のメッセージを扱う期待したが、それ以降の特定の時間で」。

答えて

2

あなたはメッセージを延期したいのですか?

Azure SDK for Node.jsについて多くを知っているが、MSDN DocumentationメッセージにScheduledEnqueueTimeUtcを設定することができますから、しないでください:

UTCでスケジュールエンキュー時間。この値は、遅延メッセージ送信用です。将来、特定の時刻に送信されるメッセージを遅延させるために使用されます。

send a message to a Queueにのみサンプルは次のとおりです。

var message = { 
    body: 'Test message', 
    customProperties: { 
     testproperty: 'TestValue' 
}}; 
serviceBusService.sendQueueMessage('myqueue', message, function(error){ 
    if(!error){ 
     // message sent 
    } 
}); 

nodejs SDKから、私はこれらのプロパティを定義するconstants.jsファイルが見つかりました:あなたはservicebusservice.jsを見てみると、

/** 
* The broker properties for service bus queue messages. 
* 
* @const 
* @type {string} 
*/ 
BROKER_PROPERTIES_HEADER: 'brokerproperties', 
... 
/** 
* The scheduled enqueue time header. 
* 
* @const 
* @type {string} 
*/ 
SCHEDULED_ENQUEUE_TIME_HEADER: 'x-ms-scheduled-enqueue-time', 

setRequestHeaders関数があり、メッセージのいくつかのプロパティを取得し、それをヘッダーとして設定します。

だから私はあなたがそのようなメッセージに、このプロパティを設定することができますね。

// Set your scheduled date 
var scheduledDate = Date.now(); 
scheduledDate.setHours(scheduledDate.getHours()+3); 

var message = { 
    body: 'Test message', 
    brokerproperties: { 
     'x-ms-scheduled-enqueue-time': scheduledDate.toUTCString() 
}}; 

はそれが私はそれがこれを使って仕事を得ることができた

+0

私は今週テストします。私はあなたにそこに知りましょう:)ありがとう。 – Mik378

+0

@ Mik378、あなたはそれを動作させることができますか? :-) – Thomas

+0

私のチームはそれを有効にするためにいくつかの他のテストを行います;) – Mik378

0

:-)動作するかどうか、私に教えてください:

 const scheduledDate = new Date(); 
     scheduledDate.setMinutes(scheduledDate.getMinutes()+1); 

     const message = { 
     body: 'Hey, this worked again!', 
     customProperties: { 
      testproperty: 'TestValue' 
     }, 
     brokerProperties: { 
      ScheduledEnqueueTimeUtc: scheduledDate.toUTCString() 
     } 
    }; 
    serviceBusService.sendQueueMessage('myqueue', message, function(error){ 
     if(!error){ 
      console.log('We sent a message. Huzzah!'); 
     } 
    }); 
関連する問題