中组件之间的所有通信?组件之间的通信是怎么实现的?
在Axon中,组件之间的所有通信都是通过显式消息来完成的,这些消息由消息接口来表示。消息由有效载荷和元数据组成。它是表示实际功能消息的特定于应用程序的对象,并且是描述消息上下文的键-值对。
消息的每个子接口代表一种特定类型的消息,并定义描述消息的附加信息。与元数据不同,这些附加信息定义了正确处理此类消息所需的信息。
该消息是不可变的。这意味着要添加元数据元素,您实际上创建了一个带有附加(或其他)元数据元素的新消息实例。为了仍然能够将一个消息的两个Java实例视为表示同一概念消息,每个消息都有一个标识符。更改消息的元数据不会更改此标识符。
元数据
消息的元数据通常描述生成消息的上下文。例如,元数据可能包含有关导致生成此消息的消息的信息(例如,命令处理程序基于传入的命令生成事件)。
在Axon中,元数据被表示为字符串到对象的映射。虽然您可以随意添加任何类型的对象作为元数据值,但是我们强烈建议您坚持使用本机类型和字符串(或者至多是简单的对象)。就结构变化而言,元数据不具有与有效载荷相同的灵活性。
与传统地图不同,Axon中的元数据是不可变的。variant方法将创建并返回一个新实例,而不是修改现有的实例。
使用指定的键值对创建元数据实例。
添加一个额外的键值对并返回一个新的元数据实例。
消息中的元数据是这样工作的:
创建一个以“myPayload”为负载的EventMessage
WithMetaData用给定的映射替换消息中的任何元数据。在这种情况下,Java . util . collections . singleton map()用于定义单个条目。
和元数据将给定映射中的条目添加到消息的元数据中。具有相同关键字的现有条目将被覆盖。注意——关于元数据实现Map元数据也实现Map,这意味着也可以使用singletonMap(或任何其他类型的Map)来代替传递MetaData.with(key,value)。因为元数据是不可变的,所以所有的映射变异操作都会抛出UnsupportedOperationException。
消息特定数据
某些类型的消息提供附加信息(在消息提供的基础上)。例如,EventMessage(扩展Message的接口)也提供时间戳来指示事件发生的时间。除了有效负载和元数据之外,QueryMessage还包含请求组件所期望的响应类型的描述。
本文来自网络,不代表「专升本要什么条件_专升本要几年_成人高考专升本_山东专升本信息网」立场,转载请注明出处:http://www.sdzsb8.cn/sbwd/23628.html