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类似场景中的代码示例。
任何进一步的关注,请随时让我知道。
- Bad handshake或ECONNRESET Azure Mysql Nodejs
- 尝试通过节点createBlockBlobFromStream()将Blob上载到Azure存储时发生“RequestBodyTooLarge”
- 节点使用来自路由的Azure MS SQL数据库写入和读取数据
- 存储过程受节点mssql对象影响的行
- Node.js服务器应用程序使用cors,express和google api在azure部署后不工作
- 禁用Azure网站上的请求validation
- 在Azure上部署MEAN + Webpack
- 成功login后,Azureauthentication返回到login页面 – node.js
- 我可以通过复制文件在Azure节点应用程序服务器上部署node.js吗?