我有一个azure功能,每1分钟触发一次。该函数创建如下所示的MessageReceiver
var messageReceiver = new MessageReceiver(serviceBusConnectionString, entityPath, ReceiveMode.PeekLock, null, 0);
var allMessages = new List<Message>();
Message message;
do {
message = await messageReceiver.ReceiveAsync(TimeSpan.FromSeconds(2));
if (message != null) allMessages.Add(message);
} while (message != null && allMessages.Count() < 100);
处理后,将使用messageReceiver.CompleteAsync
完成消息,并使用messageReceiver.CloseAsync()
关闭messageReceiver。
该函数第一次运行时最多从订阅获取100条消息,但在下一次运行时,它只获取0或1条消息,无论订阅中可用的消息数量如何(Service Bus Explorer显示订阅中有超过10条消息)。因此,即使有消息可用,ReceiveAsync似乎也返回null。
增加ReceiveAsync的超时似乎没有帮助。
当有消息可用时,ReceiveAsync为什么返回null?
我找到了解决办法或变通办法。如果我将服务总线主题更改为不允许分区(这要求删除该主题并重新创建它),那么当有消息可用时,ReceiveAsync总是返回一条消息。
这些问题似乎与此问题有关Azure服务总线ReceiveBatch()的古怪行为
我一直在尝试创建一个客户端来连接我的Azure服务总线队列。我一直在参考此文档: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-java-how-to-use-queues#send-消息到队列。 我的代码: 在创建客户端时,我遇到以下错误: 通用域名格式。微软蔚蓝色的服务总线。原语。Service
我正在寻找一种解决方案,用于在几个本地数据库之间进行实时数据集成。没有太多的数据转换。我正在评估各种可用的ESB。我认为使用Azure服务总线进行数据集成可以快速开发解决方案。建议使用Azure service bus集成所有内部数据库吗?
在Azure服务总线主题中,我有一个包含1000多条消息的订阅。这些消息由worker角色使用。出于监视目的,我想查看前10条消息,看看哪种消息正在等待处理。为了完成该任务,我创建了一个subscriptionclient,并调用方法PeekBatchAsync。奇怪的行为是,有时PeekBatchAsync返回的消息少于10条(即2条或4条)。 更多信息以澄清上下文: 我确信订阅包含超过1000
我使用此url中的示例http://azure.microsoft.com/en-us/documentation/articles/service-bus-java-how-to-use-jms-api-amqp/.我有两个问题: 1、ACS或SAS 连接URL, 用户名和密码来自ACS身份验证,但Azure服务总线已将其身份验证从ACS更改为SAS。它是否也支持SAS身份验证?就像用户名是SA
我已经创建了一个Azure webwork,它将向服务总线队列发送强类型消息,并成功发送。 我想创建另一个webjob,只要servicebus队列中有消息,就会触发该webjob。请在下面找到我正在尝试的代码。出于某种原因,尽管servicebus队列中有消息,但当我在本地运行webjob时,webjob未被触发并出现错误。 错误: 代码: 有谁能帮我解决这个问题吗? 谢谢
来自第三次订阅的消息会发生什么情况,是否会在TTL之后发送到死信队列 有没有办法找出消息未被使用的订阅