信息传递模式--它们是什么?它们的优点是什么,为什么只应谨慎使用它们?我们在这篇文章中澄清了这些问题。
什么是设计模式?
技术独立的设计可以在软件开发中提供成熟的模式解决方案,确保标准化和强大的架构。
如果你没有听说过软件设计模式,请先看看我们关于这个问题的这篇文章。
设计模式使开发人员能够借鉴他人的经验。它们为重复出现的任务提供成熟的解决方案。一对一的实施是不可取的。这些模式应该被作为一个指南来使用。
什么是消息?
一个基本的设计模式就是消息。实际上,这是一个被大家理所当然地使用的术语,但它的背后是什么?
数据被打包在消息中,然后通过消息通道从发送方传输到接收方。下图显示了这样一个消息传递系统。

消息传递模式--消息的基本概念
通信是异步的,这意味着两个应用程序是相互解耦的,因此不必同时运行。发送者必须建立和发送消息,而接收者必须阅读和解包消息。
什么是消息传递模式?
然而,这种消息传输的形式只是传输信息的一种方式。下图显示了消息传递设计模式的基本概念。

消息传递模式的基本组成部分
什么是消息构造?
仅仅决定使用一个消息是不够的。一个消息可以根据不同的架构模式来构建,这取决于要执行的功能。
消息构造--何时使用?
信息传递不仅可以用来在发送方和接收方之间发送数据,还可以用来在另一个应用程序中调用一个程序或请求一个响应。
通过正确的消息架构,可以保证一定的灵活性。这使得消息对未来可能的变化更加稳健。
什么是消息路由?
一个消息路由器连接着消息系统中的消息通道。我们将在后面再来讨论这个话题。这个路由器对应于一个过滤器,它调节消息的转发,但不改变消息。一个消息只有在满足所有预定条件的情况下才会被转发到另一个通道。
什么时候使用消息路由,如何使用?
例如,消息可以被转发到动态定义的收件人,或者消息的各个部分可以被处理或以不同的方式组合。
什么是消息传递通道?
在一个信息传递系统中,信息的交换并不是无规则地发生。发送方将信息转移到所谓的消息通道,而接收方则要求一个特定的消息通道。
通过这种方式,发送方和接收方是解耦的。然而,发送方可以通过选择特定的消息通道,在不知情的情况下确定哪个应用程序接收数据。
然而,消息通道的正确选择取决于你的架构。哪个通道应该被处理,什么时候处理?
通道类型之间的基本区别是什么?
基本上,通道类型可以分为两种主要类型。
可以区分点对点信道和发布-订阅信道,前者是一个发送方和一个接收方,后者是一个发送方和几个接收方。
什么是消息传递端点?
为了让发送方或接收方的应用程序连接到消息通道,必须使用一个中间人。这个客户端被称为消息传递端点。
在接收方,端点接受要发送的数据,从中建立一个消息,并通过一个特定的消息通道发送。在接收方,这个消息也通过端点接收并再次提取。一个应用程序可以在这里访问几个端点。然而,一个端点只能实现一种选择。
下图列出了一些端点类型。

消息传递设计模式--消息端点模式
我什么时候选择哪个端点?
特别是接收消息会变得很困难,导致服务器过载。因此,对客户请求的处理进行控制和可能的节制是至关重要的。一个行之有效的手段是,例如,形成处理队列或动态调整消费者,这取决于请求的数量。
什么是消息转换?
如果在两个应用程序之间交换数据时必须改变数据格式,所谓的消息转换可以确保消息通道在形式上被解耦。
这个转换过程可以理解为两个系统并行运行。实际的消息数据与元数据是分开的。
我如何监控我的消息传递系统并保持它的运行?
一个灵活的消息传递架构不幸地导致了另一方一定程度的复杂性。特别是当它涉及到在一个消息系统中整合许多消息生产者和消费者相互解耦,部分异步的消息传递时,运行中的监控会变得困难。
为此,系统管理模式已经被开发出来,以提供正确的监控工具。主要目标是防止瓶颈和硬件过载,以保证消息的顺利流动。
什么是基本系统?
以一个典型的系统管理方案为例,数据流可以通过检查发送和接收的数据数量,或处理时间来控制。
这与包含的消息信息的实际检查形成了对比。