1

据我了解,将在一个会话中进行对话。

但是,如果我有一个会话来获取对话的所有消息,那么,在处理它们时,会添加更多消息。

会话完成并发送结束对话,但队列中还有更多,因此发起者不会发送结束对话。

收到第一条消息的会话已完成/消失/不再。Service Broker 将如何处理其他消息?他们是否超时然后去另一个会话?

它是否等待具有第一条消息的会话的结束对话?(如果不是,它如何保证正确的顺序?)

或者(最坏的情况)这些消息从未处理过?

我厌倦了自己通过观察来解决这个问题,但结果很模棱两可,我想从知道的人那里得到答案。

4

1 回答 1

2

当发送 EndDialog 消息时,Service Broker 确保队列中的所有待处理消息都在 EndDialog 之前发送。无法在该对话中发送更多消息,但仍可以在目的地处理消息。

在接收端,处理器应该继续寻找消息,直到它看到 EndDialog 消息 - 一旦它看到它可以在其结束时关闭对话,因为它知道该对话不能再有消息了。

于 2013-09-04T13:54:15.760 回答