Azure服务总线-取消排定的消息重新排队

问题描述 投票:1回答:1

我正在将最新的Java绑定(v3.1.3)用于Azure Service Bus:https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/servicebus

当我创建一个新的队列客户端时,安排一条消息并取消它...

QueueClient sendClient = new QueueClient(new ConnectionStringBuilder(connectionString, queueName), ReceiveMode.PEEKLOCK);
long sequenceNumber = sendClient.scheduleMessage(message, instant);
...
sendClient.cancelScheduledMessage(sequenceNumber)

...该代码似乎按预期工作:活动消息计数变为0。但是,一旦计划的消息到达了它应该被计划的时间(我以后测试了10秒和100秒),有时会用新的序列号重新排队该消息。计划或取消消息时没有出现任何错误。我有什么办法可以确保取消的邮件不会重新排队?

azure azureservicebus azure-servicebus-queues
1个回答
0
投票

您可以通过在通过常规发送路径发送消息时设置ScheduledEnqueueTimeUtc属性,也可以显式地使用ScheduledEnqueueTimeUtc API来安排消息。后者立即返回预定消息的SequenceNumber,您以后可以使用它在需要时取消预定消息。

如果尚未发送已排定的消息,则将其排入队列。这是一个异步方法,它返回ScheduleMessageAsync,该消息在取消消息后完成。

所以,我建议您可以使用CompletableFuture取消预定的消息。

© www.soinside.com 2019 - 2024. All rights reserved.