2017-09-28 8 views
0

私は既に調査していますが、NodejsにAzureサービスバスキューリスナーを作成する方法が見つかりませんでした。Azureサービスバスキューリスナ - NodeJs

私がこれまでに見つけた唯一の方法は、Node.js用のMicrosoft Azure SDKを使用して、コスト効率の高いキューにメッセージでメッセージを要求することです。どんな助けもありがとう。あなたのシナリオでは

sbService.receiveQueueMessage(queueName, { isPeekLock: true }, function(err, lockedMessage) { 

    if (err) { 
     if (err === 'No messages to receive') { 
      console.log('No messages'); 
     } else { 
      callback(err); 
     } 
    } else { 
     callback(null, lockedMessage); 
    } 
}); 
+0

チェックこのサンプルを、それがリスナーを作成したsetIntervalを使用しています-for-node/tree/master/lib/services/serv私の問題を解決できるiceBus – Thomas

答えて

1

、私は、メッセージキューを聞くことによって他のAzureサービスやオンプレミスのサービスにあなたのコードを接続することができますそのサービスバスキュートリガを提供するAzure Functionsを使用することをお勧めします。詳細については、Service Bus bindingsを参照してください。

enter image description here

+0

、私はちょうど誰かが私がAzure関数を作成する必要なく待ち行列を聞くのに使うことができる解決策を持っているかどうかを見るのを待つでしょう。 – vilelam

0

アーロン・チェンは、最も簡単な解決策は、あなたができる、あなたがAzure Functionを使用できない場合Servicebusトリガー(余分な退屈なコード...)

Azure Functionを使用することであろう、と述べた@としてazure sdk for node.js使用し、私はこのsampleリスナーを作成するために彼らのレポを形成見つけた:https://github.com/Azure/azure-sdk:

var azure = require('azure-sb'); 

function checkForMessages(sbService, queueName, callback) { 
    sbService.receiveQueueMessage(queueName, { isPeekLock: true }, function (err, lockedMessage) { 
     if (err) { 
      if (err == 'No messages to receive') { 
       console.log('No messages'); 
      } else { 
       callback(err); 
      } 
     } else { 
      callback(null, lockedMessage); 
     } 
    }); 
} 

function processMessage(sbService, err, lockedMsg) { 
    if (err) { 
     console.log('Error on Rx: ', err); 
    } else { 
     console.log('Rx: ', lockedMsg); 
     sbService.deleteMessage(lockedMsg, function(err2) { 
      if (err2) { 
       console.log('Failed to delete message: ', err2); 
      } else { 
       console.log('Deleted message.'); 
      } 
     }) 
    } 
} 

var idx = 0; 
function sendMessages(sbService, queueName) { 
    var msg = 'Message # ' + (++idx); 
    sbService.sendQueueMessage(queueName, msg, function (err) { 
     if (err) { 
      console.log('Failed Tx: ', err); 
     } else { 
      console.log('Sent ' + msg); 
     } 
    }); 
} 

var connStr = process.argv[2] || process.env.CONNECTION_STRING; 
if (!connStr) throw new Error('Must provide connection string'); 
var queueName = 'sbqtest'; 

console.log('Connecting to ' + connStr + ' queue ' + queueName); 
var sbService = azure.createServiceBusService(connStr); 
sbService.createQueueIfNotExists(queueName, function (err) { 
    if (err) { 
     console.log('Failed to create queue: ', err); 
    } else { 
     setInterval(checkForMessages.bind(null, sbService, queueName, processMessage.bind(null, sbService)), 5000); 
     setInterval(sendMessages.bind(null, sbService, queueName), 15000); 
    } 
}); 
関連する問題