Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Azure服务总线队列自动转发和ScheduledEnqueueTimeUtc_Azure_Azureservicebus_Azure Servicebus Queues - Fatal编程技术网

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

使用Azure服务总线队列自动转发和ScheduledEnqueueTimeUtc,azure,azureservicebus,azure-servicebus-queues,Azure,Azureservicebus,Azure Servicebus Queues,我在同一命名空间中有2个Azure Service Bus队列。我正在使用ScheduledQueueTimeUTC将计划消息放置在其中一个队列计划队列中,并将要立即处理的消息放置到另一个队列now队列中 我要做的是设置调度队列的Auto Forward属性,以便在消息到达其ScheduledQueueTimeUTC时将消息转发到now队列。队列转发会那样工作吗?或者队列自动转发是否立即发送已排队和未排队的消息 我在任何地方都找不到任何文档或示例来解释转发如何处理队列中当前不可见的消息,因为这些

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

我要做的是设置调度队列的Auto Forward属性,以便在消息到达其ScheduledQueueTimeUTC时将消息转发到now队列。队列转发会那样工作吗?或者队列自动转发是否立即发送已排队和未排队的消息


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

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

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

创建一个包含两个订阅的主题。现在打一个,以后再打另一个。在您称为ScheduledTime的属性中使用自定义属性发送消息,并将该属性设置为希望消息稍后出现在计划队列中的所需日期时间。所有这些名称都是组成的

创建now订阅时,将其设置为ForwardTo到now队列,并添加一条规则,如果使用C,则使用CreateSubscriptionDescription、RuleDescription重载,从而将筛选器设置为TrueFilter,并将Action设置为SqlRuleAction,其中包含抛出计划时间的表达式

创建以后的订阅时,将其设置为ForwardTo到计划队列,并添加带有TrueFilter的规则,并将操作设置为执行以下操作的SqlRuleAction

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


理论上,这一切都应该是可行的

谢谢你解释它是如何工作的。我希望有一个只转发排队消息的选项,这样我就可以使用该功能来帮助区分计划消息和非计划消息。我可以很容易地编写一个作业,以便在消息进入队列后移动消息,但是自动移动会很好。请问您为什么担心将来的消息会出现在单独的队列中?我想将将来的消息分开,以便我可以管理和处理该队列,使其远离我的主处理队列。我的主队列已经很忙了,我不知道我未来的消息队列会增长多大。所以我想把future从主队列中分割出来。我还可以查看未来队列,以查看预期的未来负载。如果计划消息需要,我也可以拆分处理。然后,也许可以选择不在将来的工作队列中自动转发,而是在原子操作中处理这些消息并将当前工作中的新项目排队。这样,您要么退出队列,要么回滚。它还允许您将两者分开。只需要监视两个队列。谢谢Sean,这正是我所做的-我在排定的队列项目排队时处理它们,然后将它们排到主队列中。这一直是我的一个选择,我只是不确定自动前进是否能为我处理它,但你已经明确表示,它不会。谢谢克莱门斯,这是一个有趣的方法,我看到它可能会如何工作。我认为出于我的需要,我将保持它的简单性,只处理未来的队列消息,并根据需要将它们移动到我的主工作队列。我已经开始工作了,一切都很顺利。但我真的很喜欢您解释如何使用主题、属性、过滤器和操作来执行一些消息路由。我将探讨您对我正在构建的系统的另一部分所描述的内容。谢谢@克莱门斯,现在订阅的规则不应该评估ScheduleTime是否为空,从而使用SqlFilter吗?Jeff希望邮件不会马上被处理。如果它碰巧在那里,我现在正在清理它。没有延迟。我尝试按照您的描述@ClemensVasters,但没有立即处理预期的消息,没有处理ScheduleTime,并且ScheduleTime消息在ScheduleTime定义的时间后立即进入队列。让我与工程团队核实一下。这应该行得通。