[英]Azure Service Bus long running queue
我对此很陌生,也许我弄错了整个概念,我想在容器中永久运行后台作业,该作业不断从 Azure 服务总线接收消息。 有时会超过一个小时没有消息,有时消息会泛滥。
我已经在 Node.JS 中设置了我的总线,如下所示。
现在,当在一定时间内没有消息时,它将解析为一个空数组,如 idleTimeoutInSeconds 所示。 Azure 服务总线是否旨在像我预期的那样使用? 如果没有,我可以用更合适的方法来解决这个问题吗?
我需要一些永久运行并对发送的新消息做出反应的东西。
编辑: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);
});
Azure Webjobs可以持续运行并订阅服务总线队列/主题。
我很确定,即使在一个小时的不活动之后,它仍然会在此之后回复新消息。
我只在 C# 中实现了它,而不是 nodejs,尽管我确定实践是相同的。
您共享的代码似乎正在使用@azure/service-bus
SDK 的第 1 版。
虽然您的代码片段可能用于此目的,但您可以利用@azure/service-bus
SDK 版本 7 中提供的subscribe
方法,该方法专为您提到的用例(永远接收)而设计。
[相当于版本1中的registerMessageHandler
API]
可以参考receiveMessagesStreaming.ts示例代码,该示例代码使用了@azure/service-bus
SDK 的第7 版。
最近发布了@azure/service-bus
的最新版本 7.0.0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.