当前位置: 首页 > 知识库问答 >
问题:

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

盖嘉珍
2023-03-14

我正在为Azure服务总线使用最新的Java绑定(V3.1.3):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秒以后),消息有时会用新的序列号重新排队。我没有得到任何错误时安排或取消的消息。我能做些什么来确保取消的邮件不会重新排队吗?

共有1个答案

孟祯
2023-03-14

通过常规发送路径发送消息时,您可以通过设置ScheduleDenQueueTimeUTC属性来调度消息,也可以显式地使用ScheduleMessageAsyncAPI来调度消息。后者会立即返回计划消息的SequenceNumber,如果需要,您可以稍后使用该SequenceNumber取消计划消息。

如果已发送的计划消息尚未排队,则取消该消息的排队。这是一个异步方法,返回completablefuture,该方法在消息被取消时完成。

因此,我建议您可以使用CancelScheduledMessageAsync来取消计划的消息。

 类似资料:
  • 我正在使用Python开发一个集成,从不同的Azure服务总线主题和队列中读取消息。但我在安排留言时有个问题。我无法查看计划的邮件。我想偷看它们,然后要么完成,要么让它们不读,直到预定的时间。我尝试查看队列和主题,但我找不到任何文档说明如何查看其中任何一个排定的消息。有人设法做到了吗?应该是一个非常常见的用例。在使用标准的REST调用时也没有发现任何问题。

  • 我以前遇到的类似问题:Azure服务总线队列:我可以管理/取消调度消息吗?-此处接受的答案详细说明了如何取消计划的邮件。 我现在想知道是否有一种方法可以使用AMQP API查看预定的消息。Azure UI(和此方法https://docs.microsoft.com/en-gb/java/api/com.microsoft.Azure.management.servicebus._message_

  • 我在Azure中托管了两个云服务辅助角色,一个使用NServiceBus(Azure服务总线传输)消耗消息,另一个生成消息。 昨天,我部署了一个新版本的生产者工作者角色,而队列中仍然有大量消息,因为我们正在处理早上遗留下来的大量消息。当生产者启动时,它似乎已经清空(或者可能重新创建)队列,许多重要的生产消息丢失。这似乎很奇怪,但日志显示,大约在生产者角色启动时,消费者没有处理进一步的消息,我们知道

  • 我正在尝试在Azure中构建一个简单的WebAPI REST服务,后端有一个服务总线队列工作器。我可以从Web API向工作人员发送一条消息。然而,我试图发送更多的信息,只是为了看看一切是如何运作的。因此,我创建了一个简单的控制器,如下所示: 当我呼叫控制器时,我只收到工作人员接收到的大约1/2的消息。其余的似乎都被放弃了。

  • 我正忙着研究Azure服务总线。我想用它来代替我们使用多个请求的系统。 然而,我看不出人们是如何对您排队的消息做出响应的? 我可能误解了服务总线的使用方式吗?这是火灾和忘记类型的消息吗?

  • 我正在使用Azure服务总线队列。但是我不能使用“获取所有队列消息(peek Lock):微软内置于api”从队列中获取所有消息。 有没有办法获取所有队列消息? {"$连接":{"值":{"servicebus_1":{"连接ID":"/订阅/c776fex3-6aec-4722-b099-b054c267b240/资源组/Plugin-Resources/提供者/Microsoft.网络/连接/