使用 MassTransit、.NET Core 和 RabbitMQ 的设计挑战
A design challenge using MassTransit, .NET Core and RabbitMQ
我有一个带有 .NET Core 的产品,并使用 MassTransit 作为 RabbitMQ 消息代理。
我这里有两个微服务如下:
产品微服务
产品特色
在我的应用程序中创建产品时,ProductCreated
事件被触发并在 RabbitMQ 中发布消息。
我的目标是在产品功能微服务中使用 ProductCreated
架构。此外,我不想在产品功能微服务中重新创建 ProductCreated
class。
我的解决方案是将产品微服务的领域层放在NuGet上,然后将其添加到产品功能微服务中。这样做有一个问题:如果 ProductCreated
schema 将被更改,我必须重新打包 ProductCreated
schema 并再次将其放在 NuGet 上,最后在产品功能微服务中升级包版本。
有什么方法可以克服这个挑战吗?或者有什么更好的解决办法吗?
使用消息协定创建共享 NuGet 包是一种相当常见的解决方案,许多团队都在使用。
只要消息合约向后兼容,之前合约版本的消费者应该不会有任何问题。这需要注意和纪律,但这并不难。
我有一个带有 .NET Core 的产品,并使用 MassTransit 作为 RabbitMQ 消息代理。
我这里有两个微服务如下:
产品微服务
产品特色
在我的应用程序中创建产品时,ProductCreated
事件被触发并在 RabbitMQ 中发布消息。
我的目标是在产品功能微服务中使用 ProductCreated
架构。此外,我不想在产品功能微服务中重新创建 ProductCreated
class。
我的解决方案是将产品微服务的领域层放在NuGet上,然后将其添加到产品功能微服务中。这样做有一个问题:如果 ProductCreated
schema 将被更改,我必须重新打包 ProductCreated
schema 并再次将其放在 NuGet 上,最后在产品功能微服务中升级包版本。
有什么方法可以克服这个挑战吗?或者有什么更好的解决办法吗?
使用消息协定创建共享 NuGet 包是一种相当常见的解决方案,许多团队都在使用。
只要消息合约向后兼容,之前合约版本的消费者应该不会有任何问题。这需要注意和纪律,但这并不难。