在点对点域中,消息生成方被称为发送者,而使用方被称为接收者。它们通过被称为队列的目的地来交换消息:发送者生成队列中的消息;而接收者则使用队列中的消息。
图 2–1 显示了点对点域中最简单的消息传送操作。MyQueueSender 向队列目的地 MyQueue1 发送 Msg1。然后, MyQueueReceiver 从 MyQueue1 获得该消息。
图 2–2 显示了一个更为复杂的点对点消息传送图,以说明该域中的可能情况。两个发送者 MyQSender1 和 MyQSender2 使用同一连接向 MyQueue1 发送消息。 MyQSender3 使用另一连接向 MyQueue1 发送消息。在接收端,MyQReceiver1 独占一个连接使用 MyQueue1 中的消息,而 MyQReceiver2 和 MyQReceiver3 共享一个连接以使用 MyQueue1 中的消息。
这个较为复杂的图说明了有关点对点消息传送的其他几点。
多个生成方可向一个队列发送消息。生成方可共享连接或使用不同连接,但它们均可访问同一队列。
多个接收者可以使用一个队列中的多条消息,但每条消息只能由一个接收者使用。所以,Msg1、Msg2 和 Msg3 由不同的接收者使用。(这是 Message Queue 的扩展。)
接收者可共享连接或使用不同连接,但它们均可访问同一队列。(这是 Message Queue 的扩展。)
发送者和接收者之间不存在时间上的相关性:客户端发送一条消息后,无论接收者是否正在运行,都能获取该消息。
可在运行时动态添加和删除发送者和接收者,这样,即可根据需要缩放消息传送系统。
消息在队列中按发送的顺序排列,但使用消息的顺序取决于多种因素,例如消息失效日期、消息优先级以及使用消息时是否使用了选择器。
点对点模型具有许多优势: