Events 如何在微服务体系结构中共享事件代码
我正在研究一种“类似微服务”的体系结构。每个微服务都可以向RabbitMQ触发一些事件。事件由事件代码标识。目前,触发事件的代码是在触发事件的微服务中声明的硬编码常量字符串。 我的问题是,每个想要订阅此事件的微服务都必须复制此事件代码字符串。这很容易出错,尤其是在重命名事件代码时,因为订阅此事件代码的所有微服务都需要相应地更改。。。这是非常糟糕的 我看到了可能的替代方案:Events 如何在微服务体系结构中共享事件代码,events,design-patterns,architecture,domain-driven-design,microservices,Events,Design Patterns,Architecture,Domain Driven Design,Microservices,我正在研究一种“类似微服务”的体系结构。每个微服务都可以向RabbitMQ触发一些事件。事件由事件代码标识。目前,触发事件的代码是在触发事件的微服务中声明的硬编码常量字符串。 我的问题是,每个想要订阅此事件的微服务都必须复制此事件代码字符串。这很容易出错,尤其是在重命名事件代码时,因为订阅此事件代码的所有微服务都需要相应地更改。。。这是非常糟糕的 我看到了可能的替代方案: 仅在触发事件的微服务中声明事件代码。让消费者微服务直接访问触发事件的微服务中声明的代码。在本例中,事件声明一次,但它在微服
- 仅在触发事件的微服务中声明事件代码。让消费者微服务直接访问触发事件的微服务中声明的代码。在本例中,事件声明一次,但它在微服务之间创建了源代码依赖关系。。。这很糟糕
- 创建包含所有应用程序的所有事件代码的源文件(在所有MicroService之外)。此源文件由所有MicroService共享。在这种情况下,每个事件声明一次,但它为所有微服务创建了一个全局依赖项,这违反了单一责任原则。。。这很糟糕
- 我们从不引入新的必填字段,只引入可选字段(带有记录的默认值)
- 忽略未识别的字段(但已转发)
- 可选字段的使用者知道在缺少预期字段时使用默认值
- 当无法满足这些约束时,您将引入一条新消息
- ,特别是第2.6节,该节描述了公共合同的演变
- ,特别是“基于基本类型的版本控制”