我们有内部服务总线安装。我可以使用QPID AMQP 1.0 0.24客户端发布和订阅/读取消息。然而,队列浏览不起作用,当队列中没有更多消息时,对hasMoreElements()的调用将无限期挂起。堆栈跟踪是:
Thread [main] (Suspended)
waiting for: ConnectionEndpoint (id=19)
Object.wait(long) line: not available [native method]
ConnectionEndpoint(Object).wait() line: 503
Receiver.drainWait() line: 533
QueueBrowserImpl$MessageEnumeration.hasMoreElements() line: 154
Qpid.testBrowseTopic(Connection, Context) line: 209
Qpid.runTest(Qpid$Options) line: 93
Qpid.main(String[]) line: 63
代码:
ConnectionFactory ConnectionFactory=(ConnectionFactory)上下文。查找(“MS\U SERVICE\U BUS”);连接=连接工厂。createConnection();
session = connection.createSession(false/*transacted*/, Session.AUTO_ACKNOWLEDGE);
Queue queue = (Queue) context.lookup("MY_QUEUE");
browser = session.createBrowser(queue);
Enumeration<Message> msgs = browser.getEnumeration();
while (msgs.hasMoreElements()) {// hangs when there are no more messages
Message message = msgs.nextElement();
//printMessage(message);
}
QPID 0.22的行为相同。此错误是在QPID客户端还是服务总线中?
谢谢,简
这里发生了两件事:
1)服务总线目前不支持通过AMQP浏览消息。因为会话是用AUTO_ACKNOWLEDGE创建的,所以您从枚举中获得的每条消息都会立即从队列中删除。
2)我已经用QPid 0.25复制了hasMoreElements()中的挂起。似乎hasMoreElements()正在等待更多消息到达队列中,至少一开始是这样。如果我发送更多消息,循环将继续,一些新到达的消息将被返回,但它会很快停止。我仍在调查以确定那里发生了什么。
我想在我的服务总线队列中接收挂起的消息。我浏览了一些关于接收消息的链接(https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-java-how-to-use-queues),但其中不包含有关如何接收和查看这些消息的信息。 从服务总线队列接收消息的Java代码如下[我是Java新手]:- 但当我运行此代码时,
我正在使用azure服务总线主题和订阅机制,并希望处理所有在死信队列中的消息。 此外,我想通过C#中的Azure Web作业处理消息,并将其发送回队列。所以我想知道如何通过我的应用程序处理死信队列上的消息?
我有一个服务总线Q,从Azure门户可以或多或少地看到服务总线Q包含多少条目。如何使用他们的管理API获取此计数?我仔细阅读了文档,但没有找到答案。
我正在尝试创建QueueClient并将其超时时间从默认值60秒增加到60秒。当我从Connectionstring创建客户端时,它工作正常,但我无法调整时间。当我使用下面的工厂代码创建客户机时,我得到以下超时异常。谁能告诉我我错过了什么或只是没有做什么。 {“请求在00:00:00毫秒后超时。无法确定请求是否成功完成。应进行其他查询以确定操作是否成功。”} 工作于Endpoint=sb://xx
今天晚上,我们观察到排队时间非常慢。我们的追踪数据告诉我们 需要45-60秒。这种情况发生在两个已经存在很长时间的队列上。他们几乎从来没有超过1-2条记录,我们使用一个带有服务总线触发器的网络作业来完成任务。我们正在排队等候一个简单的POCO。还有另一个队列正在快速排队,所以由于没有任何其他想法,我删除了两个麻烦的队列。当代码重新创建它们时(正如它被构建时所做的那样),它们在不到一秒钟的时间里开始
我在MassTransit和azure服务总线上开发了一个简单的发布/订阅示例作为消息代理。我不明白的是,每次启动解决方案时,MassTransit都会为每个连接到总线的服务实例创建一个队列: 我不知道这样做的目的是什么。在我停止服务后,队列将被释放。MassTransit文档没有对此给出解释。也许这里有人知道?