>我已经将这些用于在项目中传递消息的库更新到最新版本:
- 画谜
- Rebus.RabbitMQ
- 雷布斯城堡温莎
- Rebus.Log4Net
- 温莎城堡
当发现此版本中缺少一些非常方便的旧方法时,我感到非常困惑。
我有以下重总线配置 API:
Configure.With(new WindsorContainerAdapter(container))
.Logging(l => l.Log4Net())
.Transport(t => t.UseRabbitMqAndGetInputQueueNameFromAppConfig(connectionString)
.ManageSubscriptions().SetPrefetchCount(5))
.MessageOwnership(d => d.FromRebusConfigurationSection())
.Serialization(s => s.Use(new MySerializer()))
.CreateBus()
.Start();
新版本中没有这些方法:
- UseRabbitMqAndGetInputQueueNameFromAppConfig
- ManageSubscriptions in RabbitMqOptionsBuilder
- MessageOwnership in RebusConfigurer
- Log4Net 扩展方法存在于库中,甚至无法被 VS 识别
不过,Rebus 文档在许多地方仍然有关于旧方法和方案的引用。
旧的方便方法做了什么?有没有人遇到同样的问题,可以给我一个提示,在当前版本(0.99.67)中使用什么api来配置客户端的现有方式。
0.84.0 之前(含 0.84.0 的 Rebus 版本)是"Rebus 1" - Rebus 在 0.90.0 版本中收到了一个相当大的更新(重写了核心,然后向前移植了大多数库) - "Rebus 2"
所以你最好的选择可能是Update-Package Rebus -Version 0.84.0
(并对RabbitMQ,Windsor和Log4net集成包做同样的事情)
Rebus 2 与 Rebus 1 不兼容,因此如果您决定更新到 2,您应该注意这一点。
此外(正如您所发现的)它已经看到了一些 API 更改,其中最重要的变化是IBus
上的大多数方法现在都async
,因此要求您例如await bus.Send(...)
(如果您不在async
方法中,则bus.Send(...).Wait()
)