使用远程队列点的点到点消息传递示例
如果生产应用程序或消费应用程序相对于其目标来说是远程的,那么使用远程队列点来管理该目标所在的消息传递引擎与该应用程序连接至的消息传递引擎之间的消息流。
下图说明了在点到点消息传递中使用远程队列点。生产应用程序连接至消息传递引擎 ME1,但是,作为应用程序的目标的总线目标具有 ME2 上的队列点。ME2 上的队列点在运行时是由 ME1 上的远程队列点表示的。远程队列点接收来自应用程序的消息,然后将它们可靠地传输至 ME2 上的队列点。同样,消费应用程序连接至 ME3,并通过 ME3 上的远程队列点使用来自 ME2 上队列点的消息。
图 1. 使用远程队列点来生成和使用点到点消息。
远程消息生产涉及到的一系列步骤如下所示:
- 连接至 ME1 的生产应用程序将消息发送至队列目标,而队列目标具有在 ME2 上定义的队列点。
- 在将消息传输至 ME2 上的队列点之前,将在 ME1 上的远程队列点对这些消息进行排队。
- 只要有可能,就将消息发送至 ME2 上的队列点。ME1 将记住消息的存在,直到 ME2 确认它已接收到该消息为止。
- 连接至 ME3 的消费应用程序尝试使用队列目标中的消息。
- ME3 将消息请求发送至 ME2 上的队列点。
- 当 ME2 上的队列点上具有满足消息请求条件的消息时,就会将该消息发送至 ME3 上的远程队列点。
- 将消息从远程队列点传递至消费应用程序。如果应用程序使用该消息,那么会从 ME2 上的队列点中删除该消息。如果应用程序不使用该消息,那么在 ME2 上的队列点上再次使该消息变得可用,以便于其他应用程序使用。在上述任何一种情况下,都是从 ME3 上的远程队列点中完成和移除消息请求的。