gpt4 book ai didi

javascript - Azure + Node Js Service 总线持久订阅主题

转载 作者:搜寻专家 更新时间:2023-10-31 23:24:05 25 4
gpt4 key购买 nike

使用 Node js,我想为Azure服务总线服务主题创建持久订阅。现在它只执行一次。请指导我,我对此很陌生。提前致谢。我正在使用以下代码来订阅主题。

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

类似场景的代码示例可以引用 GitHub由 Azure 团队提供。

如有任何进一步的疑问,请随时告诉我。

关于javascript - Azure + Node Js Service 总线持久订阅主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37874359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com