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

使用Azure服务总线队列自动转发

冉永宁
2023-03-14

我在同一命名空间中有2个Azure Service Bus队列。我使用ScheduledQueueTimeUTC将计划消息放置在其中一个队列(“计划队列”)中,并将要立即处理的消息放置在另一个队列(“现在队列”)中。

我想做的是设置“预定队列”的自动转发属性,以便在消息到达它们的“预定队列”时将消息转发到“现在队列”。队列转发会这样工作吗?还是队列自动转发会立即发送已排队和未排队的消息

我在任何地方都找不到任何文档或示例来解释转发如何处理队列中当前“不可见”的消息,因为它们尚未到达排队日期时间。

共有2个答案

左丘恩
2023-03-14

转发将把所有消息从原始队列发送到目标队列。如果查看目标队列,您将找到带有ScheduledEnqueueTimeUtc的消息,但在到达时间之前无法接收该消息

慕健
2023-03-14

您应该能够通过一个主题和两个订阅来实现这一点。我今天没有时间自己做重现,所以让我知道如果这不起作用:

创建一个包含两个订阅的主题。一个叫“现在”,另一个叫“以后”。发送带有自定义属性(在属性中)的消息,该属性称为“ScheduledTime”,并设置为希望消息稍后出现在“ScheduledQueue”中的所需日期时间(所有这些名称都是由其他名称组成)

创建现在订阅时,将其设置为ForwardTo到现在队列,并添加一个规则,如果使用C#,则使用CreateSubcription(Subcriptiondescription,Ruledescription ption)重载,从而将过滤器设置为TrueFilter,并将Action设置为带有表达式的SqlRuleAction“删除计划时间”,将计划时间抛出。

创建“以后”订阅时,将其设置为ForwardTo到“计划队列”,并添加带有TrueFilter的规则,并将操作设置为SqlRuleAction,该操作执行“set sys.ScheduledQueueTimeUTC=ScheduledTime;REMOVE ScheduledTime”

在转发之前,规则会将您的值复制到目标队列所需的排队时间。

理论上,这一切都应该奏效。

 类似资料:
  • 我已经创建了一个简单的窗口服务来使用来自Azure服务总线队列的消息。我使用TopShelch创建windows服务。下面的代码从这里剪切如下示例:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues 高频。Run(); ServiceBusHe

  • 我正在使用azure服务总线主题和订阅机制,并希望处理所有在死信队列中的消息。 此外,我想通过C#中的Azure Web作业处理消息,并将其发送回队列。所以我想知道如何通过我的应用程序处理死信队列上的消息?

  • 我有一个服务总线Q,从Azure门户可以或多或少地看到服务总线Q包含多少条目。如何使用他们的管理API获取此计数?我仔细阅读了文档,但没有找到答案。

  • 今天晚上,我们观察到排队时间非常慢。我们的追踪数据告诉我们 需要45-60秒。这种情况发生在两个已经存在很长时间的队列上。他们几乎从来没有超过1-2条记录,我们使用一个带有服务总线触发器的网络作业来完成任务。我们正在排队等候一个简单的POCO。还有另一个队列正在快速排队,所以由于没有任何其他想法,我删除了两个麻烦的队列。当代码重新创建它们时(正如它被构建时所做的那样),它们在不到一秒钟的时间里开始

  • 我正在尝试创建以下进程: 为了连接两端(IoT Hub和Notification Hub),我尝试按照以下教程操作:https://www.developer.com/ws/android/senging-notifications-to-mobile-apps-fromon-azure-function-apps.html 此外,我还添加了从IoT集线器到服务总线中适当队列的路由。 现在,每当I

  • 使用WebJobs SDK时,将代理消息移动到死信队列的正确方法是什么?通常我会打电话给味精。死信()。但是,SDK负责管理代理消息的生命周期。它将调用msg。如果方法返回成功,则返回Complete(),如果发生异常,则将重试该消息。我需要第三种情况,告诉ServiceBus队列将消息移动到死信队列,因为它是一条坏消息。