gpt4 book ai didi

.net - 从 MSMQ 按优先级获取消息

转载 作者:行者123 更新时间:2023-12-04 06:29:42 25 4
gpt4 key购买 nike

我通过设置其优先级在 MSMQ 中发送消息。使用 C#

我可以先从具有高优先级的 MSMQ 获取消息吗?

就像我们进入优先队列一样。

还有一件事..

假设有三个优先级

0 - 高
1-中
2 - 低

队列中的序列是 2001122221111100

现在,如果我发送具有高优先级(0)的消息,它将被放置在哪里??通过在 MSMQ 中设置优先级。它的行为会像实际的优先级队列吗?

最佳答案

MSMQ 确实支持消息的优先排队,但是相同优先级的消息在出队时按到达顺序进行处理。例如,如果您发送 3 条消息,两条优先级为 7,一条为优先级 0,那么收到的第一条优先级为 7 的消息将出队,然后是收到的第二条优先级为 7 的消息,最后是消息优先级 0。你不应该做任何特殊的事情来按优先级顺序处理排队的消息……但是请注意,任何给定优先级的“最旧”消息将在相同优先级的“最新”消息之前出列。还应该注意的是,任何事务性消息都会忽略它们的优先级,IIRC。

编辑:

虽然 MSMQ 支持优先级,但它的行为与优先级队列不同。两者是不同的算法,MSMQ 明显要复杂得多。当您设置消息的优先级时,这不仅有助于确定该消息出队的顺序,还会影响该消息通过 MSMQ 服务从发送者/发布者传播到接收者/订阅者的优先级。假设您使用三个最低优先级(MSMQ 支持 8 个优先级,从 0(最低)到 7(最高)),可能会出现以下场景:

0 = 低,1 = 中,2 = 高

发件人在指定时间(分:秒)发送具有给定优先级的消息:

0 @ 1:00  
2 @ 1:00
0 @ 1:01
1 @ 1:02
1 @ 1:03
0 @ 2:01
2 @ 2:01

接收方按以下顺序将其队列中的消息排队(假设没有消息出队):
2 @ 1:00
2 @ 2:01
1 @ 1:02
1 @ 1:03
0 @ 1:00
0 @ 1:01
0 @ 2:01

当您处理来自接收方队列的消息时,它们将按照优先级和接收时间的顺序进行处理。

关于.net - 从 MSMQ 按优先级获取消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1310414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com