消息队列接收来自应用程序的消息,并以先进先出(FIFO)的方式使其可用于一个或多个其他应用程序。在许多体系结构场景中,如果应用程序 A 需要向应用程序 B 和 C 发送更新或命令,则可以为 B 和 C 设置单独的消息队列。A 将向每个队列写入单独的消息,每个依赖应用程序将从自己的队列中读取消息(消息在退出队列时被删除)。不需要 B 或 C 可用,A 就可以发送更新。每个消息队列都是持久的,因此如果应用程序重新启动,它将在重新联机后开始从其队列中提取消息。这有助于打破依赖系统之间的依赖关系,并可以为应用程序提供更大的可伸缩性和容错性。
巴士
消息总线或服务总线为一个(或多个)应用程序提供了将消息传递给一个或多个其他应用程序的方法。可能不能保证先进先出的订购,并且总线的订阅者可以在不知道消息发送者的情况下来来去去。因此,可以编写应用程序 A 来通过消息总线将状态更新传递给应用程序 B。稍后编写的应用程序 C 也可以从这些更新中受益。应用程序 C 可以配置为监听消息总线并根据这些更新采取行动,而不需要对应用程序 A 进行任何更新。与队列不同,发送应用程序显式地将消息添加到每个队列中,消息总线使用发布/订阅模型。消息被发布到总线,订阅了该类消息的任何应用程序都将接收该消息。这种方法允许应用程序遵循开放/关闭原则,因为它们对未来的更改是开放的,而对额外的修改则保持关闭。