这是我的新手,也许我弄错了整个概念,我想在容器中有一个永久运行的后台作业,该作业不断接收来自Azure Service Bus的消息。有时将有一个多小时没有消息,并且有时会有消息泛滥。
我已经在Node.JS中设置了总线,如下所示。
现在,当在一定时间内没有消息时,它将解析为一个空数组,如idleTimeoutInSeconds所示。 Azure Service Bus是否打算像我预期的那样习惯? 如果没有,我可以使用其他更合适的方法来解决吗?
我需要可以永久运行并能对发送的新消息做出反应的东西。
编辑:即使很合适,Web服务器在某些情况下也不会做必要的工作。
async function main(){
const sbClient = ServiceBusClient.createFromConnectionString(connectionString);
const queueClient = sbClient.createQueueClient(queueName);
const receiver = queueClient.createReceiver(ReceiveMode.ReceiveAndDelete);
try {
while(true){
const messages = await receiver..receiveMessages(10);
console.log("Received messages:");
console.log(messages.map(message => message.body));
}
} finally {
await sbClient.close();
}
}
main().catch((err) => {
console.log("Error occurred: ", err);
});
答案 0 :(得分:0)
Azure Webjobs可以连续运行并订阅服务总线队列/主题。
我非常确定,即使在一个小时的不活动之后,它仍然会响应新消息。
尽管我确定实践是相同的,但是我只在C#中实现了它,而在nodejs中没有实现。
答案 1 :(得分:0)
您共享的代码似乎正在使用@azure/service-bus
SDK的版本1。
尽管您的代码段可以达到目的,但是您可以利用subscribe
SDK第7版中提供的@azure/service-bus
方法,该方法是专门为您提到的用例设计的(永远接收)。
[相当于版本1中的registerMessageHandler
API]
您可以参考使用@azure/service-bus
SDK第7版的receiveMessagesStreaming.ts示例代码。
@azure/service-bus
的最新版本7.0.0已于最近发布。