【问题标题】:Azure service bus not receiving messagesAzure 服务总线未收到消息
【发布时间】:2020-12-14 06:47:50
【问题描述】:

我正在使用 Azure 服务总线在我的 K8s 设置中跨容器发送消息。接收消息的服务的实现在 Node.js 中完成。从文档页面,这是我用来接收消息的代码。

serviceBusService.receiveQueueMessage('feedback', function(error, receivedMessage) {

  if (!error) {

   // Message received and deleted

   console.log(receivedMessage);

  //..

   }

});

第一次一切正常,但第二次没有收到消息。当代码 sn-p 保存在 setInterval 块内时,它按预期工作。这似乎不是这样做的预期方式。

有什么想法可能是错的吗?

【问题讨论】:

  • 我认为这是意料之中的:receiveQueueMessage 只收到一条消息
  • 那么理想的实现方式应该是什么?使用 setInterval 似乎过于幼稚,浪费资源。
  • 也许看看 AMQP 库?
  • 好的,这对我来说是新的,我会检查一下。谢谢:)
  • @Mikhail 但我期待它能够像 firebase 一样工作。它将自动收到更改通知。

标签: javascript node.js azure azureservicebus azure-servicebus-queues


【解决方案1】:

我没有使用过ServiceBus客户端的js库,但是拥有它的.NET库似乎是类似的方法。因此,如果 js versjon 的工作方式相同,那么它只会收到一条消息,您必须自己继续。

.Net库中一般有两种方式:

  1. 您可以使用您认为必要的任何内容编写自己的 while 循环

  2. 您使用的 RegisterMessageHandler 似乎不在 js 库中

2 号选项通常做同样的事情,并在泵内启动 while 循环,这样您就不必自己实现它。

你可以看看 here 是如何实现 while 循环的,并在 js 中做一些类似的事情。

【讨论】:

    【解决方案2】:

    就像 Mikhail Shilkov 之前在 cmets 中提到的那样,我怀疑它只接收一条消息,我还建议使用 AMQP 库。

    我知道这是一个迟到的回复,但以防万一有人遇到问题,请参阅下面的链接。

    @azure/service-bus(基于 AMQP)的 7.0.0 版本最近已发布。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      相关资源
      最近更新 更多