gpt4 book ai didi

rebus - 如何避免对 rebus 消息的编译时依赖性?

转载 作者:行者123 更新时间:2023-12-02 03:07:31 26 4
gpt4 key购买 nike

我想通过上下文 A 引发的事件集成两个限界上下文并使用来自上下文 B 的事件。我怎么想避免编译时间依赖性,所以上下文 B 不必包含上下文 A 的 dll/库。(至少我不希望每次新事件类型获取时都需要更新对 A 的引用的麻烦由上下文 A 公开。

Rebus 是否有任何首选/最佳实践?

最佳答案

实际上有几种方法:)

就我而言,我更喜欢将消息作为单独的 NuGet 包分发——然后就需要查看 packages.config 了查看每个端点有哪些依赖项。

只要我保持发布的消息模式不可变(即遵循严格的仅附加方法来改进它),使用事件就没有问题——当反序列化为旧版本的消息模式时,数据会被简单地截断。

但如果您希望端点的耦合度低于此,您可以做几件事。

除非您更改序列化程序,否则消息将序列化为 UTF8 编码的 JSON。这意味着订阅者总是可以安装自己的 JSON 序列化器,例如将消息反序列化为它自己的类型,或者简单地反序列化为 JObject (假设您使用的是 Newtonsoft JSON.NET)。

事实上——如果我没记错的话——你可以包含 NuGet 包 Rebus.NewtonsoftJson并通过去使用它

Configure.With(new CastleWindsorContainerAdapter(container))
.(...)
.Serialization(s => s.UseNewtonsoftJson())
.Start();

它带来了 Newtonsoft 的 JObject混合,然后您可以通过实现 IHandleMessages<JObject> 在您的消息处理程序中使用它.

希望这能给你一些启发:)

关于rebus - 如何避免对 rebus 消息的编译时依赖性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41763905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com