我正在使用Azure服务总线在K8s设置中跨容器发送消息。接收消息的服务的实现是在Node.js中完成的。在doc页面中,这是我用来接收消息的代码。
serviceBusService.receiveQueueMessage('feedback', function(error, receivedMessage) {
if (!error) {
// Message received and deleted
console.log(receivedMessage);
//..
}
});
第一次一切正常,但第二次没有收到消息。当代码段保存在setInterval
块内时,它可以正常工作。这似乎不是预期的做法。
任何想法可能出错?
答案 0 :(得分:0)
我没有为ServiceBus客户端使用js库,但是具有它的.NET库似乎具有相似的方法。因此,如果js versjon的工作方式相同,那么它只会收到一条消息,您必须继续自己。
.Net库中通常有两种方法:
您可以使用自己认为必要的内容编写自己的while循环
您使用的似乎是js库中缺少的RegisterMessageHandler
选项号2通常会执行相同的操作,并在泵内启动while循环,这样您就不必自己实现它。
您可以here来了解while循环的实现方式,并在js中进行类似的操作。
答案 1 :(得分:0)
就像Mikhail Shilkov先前在评论中提到的那样,我怀疑它只会收到一条消息,我也建议您使用AMQP库。
我知道这是一个较晚的答复,但是以防万一有人遇到问题,请参阅下面的链接。
@azure/service-bus
的7.0.0版本(基于AMQP)最近已发布。