message - 服务总线的消息契约版本如何?

标签 message esb masstransit messagecontract

假设我们使用基于接口(interface)的消息契约,例如 MassTransit 的建议。

首先,这些接口(interface)如何在所有应用程序之间共享? 假设我们在 nuget 包中提供它们。 (这是要走的路吗?)

那么第二,我们现在如何确保所有应用程序都使用相同的版本?

我们是否应该每次都使用新的接口(interface)(例如messageV1、messageV2)以向后兼容?这将要求我们一次发送多条消息而不是 1...

或者我们应该有一个升级窗口,让所有应用程序同时更新?

<小时/>

如果您正在寻找相同的内容,请查看答案和评论。
这里确实得到了一些高质量的反馈:D

最佳答案

MassTransit 不明确支持任何类型的版本控制,因此您可以自由选择做您认为最好的事情。您在问题中所做的假设或多或少与我做事的方式完全相同:

  • 合约作为 nuget 包在子系统之间共享
  • 需要进行更改时会创建新接口(interface),接口(interface)仅通过可空/向后兼容的更改进行扩展
  • 如有必要,会发布/发送多条消息以保持向后兼容性
  • 当不再需要时,可以废弃/删除旧版本

这看起来工作量很大,但如果你从一开始就按照这种方式设计东西,那还不错,而且确实有返回。

关于message - 服务总线的消息契约版本如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58389267/

相关文章:

objective-c - cocoa 灰信息叠加层

java - 修改 Spring 消息文本而不重新启动应用程序?

soa - JBI死了吗?它仍然是 ESB 选择中的有效标准吗?

testing - Camel 核磁共振测试 : where is AbstractComponentTest?

c# - 使用 RabbitMQ 的 MassTransit - RecieveFrom 的地址

asp.net-core - 具有 Redis 持久性的 MassTransit saga 给出了 Method Accpet does not have an implementation exception

facebook - Microsoft Bot Framework 如何设置 Facebook 消息标签

java - SDP消息构造?

java - 使用 keystore 文件部署 HTTPRouter 操作时出现问题

c# - ConcurrencyLimit 和 PrefetchCount 有什么区别?