根据我的理解,会话将在一次会议中进行。
但是,如果我有一个会话来获取会话的所有消息,那么,当它们被处理时,会添加更多消息。
会话结束并发送结束对话,但队列中有更多内容,因此发起者不会发送结束对话。
获得第一条消息的会话已完成/不再进行。 Service Broker将如何处理其他消息?他们是否超时然后去另一场会议?
它是否等待来自具有第一条消息的会话的结束会话? (如果不是,它如何保证正确的订单?)
或者(最坏的情况)是那些从未处理过的消息?
我厌倦了通过观察来自己解决这个问题,但结果很模糊,我希望有人知道答案。
答案 0 :(得分:2)
当调度EndDialog消息时,Service Broker会确保队列中的所有待处理消息都在EndDialog之前发送。 不能再在该对话上发送消息,但仍可在目的地处理消息。
在接收端,处理器应该继续查找消息,直到它看到EndDialog消息 - 一旦它看到它可以在其结束时关闭对话,因为它知道该对话不再有消息。