使用 MassTransit、.NET Core 和 RabbitMQ 的设计挑战

A design challenge using MassTransit, .NET Core and RabbitMQ

我有一个带有 .NET Core 的产品,并使用 MassTransit 作为 RabbitMQ 消息代理。

我这里有两个微服务如下:

  1. 产品微服务

  2. 产品特色

在我的应用程序中创建产品时,ProductCreated 事件被触发并在 RabbitMQ 中发布消息。

我的目标是在产品功能微服务中使用 ProductCreated 架构。此外,我不想在产品功能微服务中重新创建 ProductCreated class。

我的解决方案是将产品微服务的领域层放在NuGet上,然后将其添加到产品功能微服务中。这样做有一个问题:如果 ProductCreated schema 将被更改,我必须重新打包 ProductCreated schema 并再次将其放在 NuGet 上,最后在产品功能微服务中升级包版本。

有什么方法可以克服这个挑战吗?或者有什么更好的解决办法吗?

使用消息协定创建共享 NuGet 包是一种相当常见的解决方案,许多团队都在使用。

只要消息合约向后兼容,之前合约版本的消费者应该不会有任何问题。这需要注意和纪律,但这并不难。