Azure + Node Js服务总线持久订阅主题

使用节点js我想为Azure服务总线服务主题创build持久订阅。 现在只执行一次。 请引导我,我是新来的这个。 提前致谢。 我正在使用以下代码来订阅主题。

var azure = require('azure'); var azureConnection = "Endpoint=sb:My connection string" var retryOperations = new azure.ExponentialRetryPolicyFilter(); var serviceBusService = azure.createServiceBusService(azureConnection).withFilter(retryOperations); serviceBusService.receiveSubscriptionMessage('mytopic01', 'mytopicsub', function (error, receivedMessage) { if (!error) { // // // Message received and deleted console.log(receivedMessage); } }); 

另外我不想使用setInterval函数。 我想解决如果消息发布到主题,它应该自动触发订阅。

实际上,如果你的客户端应用程序是一个独立的node.js应用程序,我们通常会设置一个循环程序来接收来自服务总线的循环消息。 例如

 var azure = require('azure'); var sbService = azure.createServiceBusService(<connection_string>); function checkForMessages(sbService, queueName, callback) { sbService.receiveSubscriptionMessage(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.'); } }) } } setInterval(checkForMessages.bind(null, sbService, queueName, processMessage.bind(null, sbService)), 5000); 

您可以参考Azure团队提供的GitHub类似场景中的代码示例。

任何进一步的关注,请随时让我知道。