繁体   English   中英

Azure 服务总线长时间运行队列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM