我有一个。net Core产品,使用MassTransit作为RabbitMQ消息代理。
我有两个微服务,如下所示:
产品Microservice
- 产品特性
当产品在我的应用程序中创建时,ProductCreated
事件被触发,消息在RabbitMQ中发布。
我的目标是在产品特性微服务中使用ProductCreated
模式。此外,我不想在产品功能微服务中重新创建ProductCreated
类。
我的解决方案是将产品微服务的领域层放在NuGet上,然后将其添加到产品功能微服务中。这里有一个问题:如果ProductCreated
模式将被更改,我必须重新打包ProductCreated
模式并再次将其放在NuGet上,最后在产品功能微服务中升级包版本。
有办法克服这个挑战吗?或者有更好的解决方案吗?
创建带有消息契约的共享NuGet包是一种相当常见的解决方案,也是许多团队使用的一种解决方案。
只要消息契约是向后兼容的,以前的契约版本的消费者不应该有任何问题。这需要细心和自律,但并不困难。