Sql Server Service Broker中的对话

时间:2013-09-03 23:21:27

标签: sql-server sql-server-2012 service-broker

根据我的理解,会话将在一次会议中进行。

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

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

获得第一条消息的会话已完成/不再进行。 Service Broker将如何处理其他消息?他们是否超时然后去另一场会议?

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

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

我厌倦了通过观察来自己解决这个问题,但结果很模糊,我希望有人知道答案。

1 个答案:

答案 0 :(得分:2)

当调度EndDialog消息时,Service Broker会确保队列中的所有待处理消息都在EndDialog之前发送。 不能再在该对话上发送消息,但仍可在目的地处理消息。

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