【发布时间】:2021-08-14 07:53:30
【问题描述】:
我正在使用 azure 服务总线并使用 ServiceBusReceiverClient.receiveMessages(int maxMessages, Duration maxWaitTime) 方法从服务总线接收消息,我的用例是接收一批特定时间内的消息。但这并没有按预期工作它没有等待持续时间 maxWaitTime,它会在收到一条消息后立即开始处理消息。
下面是代码sn-p:
ServiceBusReceiverClient receiver = new ServiceBusClientBuilder()
.connectionString(connectionString)
.receiver()
.maxAutoLockRenewDuration(Duration.ofMinutes(1))
.queueName("<<queue-name>>")
.buildClient();
while (true) {
Iterator<ServiceBusReceivedMessage> iterator = receiver.receiveMessages(10, Duration.ofMinutes(2)).iterator();
while (iterator.hasNext()) {
ServiceBusReceivedMessage serviceBusReceivedMessage = (ServiceBusReceivedMessage) iterator.next();
System.out.println("received message is ->"+serviceBusReceivedMessage.getBody());
}
}
它应该等待至少两分钟才能收到 10 条消息,但它会在几秒钟内开始处理只有一条消息。
【问题讨论】:
-
这不是
maxWaitTime应该做的。maxWaitTime是接收方在超时前等待消息的最长时间。
标签: java azure azureservicebus servicebus messagebroker