使用 Rebus 负载均衡器时类型初始化异常

Type initialization exception when using Rebus load balancer

我正在使用 RebusMSMQ。我已经在我的生产者向不同机器上的消费者发送消息的场景中尝试了 Rebus,并且它工作正常。

现在我需要使用多个消费者并且需要在它们之间分配负载。我运行生产者机器http://mookid.dk/oncode/archives/3621中的样本。但是我从第一行的负载平衡器中得到以下异常。

我的本地机器上有一个名为 distributor 的队列,我的工作队列存在并且它们的名称是正确的

"Could not load type 'Rebus.Logging.RebusLoggerFactory' from assembly 'Rebus, Version=2.0.1.0, Culture=neutral, PublicKeyToken=null'.":"Rebus.Logging.RebusLoggerFactory"

你能帮我解决这个问题吗?

问题是负载平衡器很旧,不能与 "Rebus 2"(Rebus 版本 0.90.0 及更高版本)一起使用。

不过,您可以使用 Rebus 自己轻松实现负载平衡器,因为您可以简单地创建一个使用 Rebus 的内置传输消息转发功能的端点。

This answer演示如何在配置Rebus时通过调用AddTransportMessageForwarder配置transport消息转发

这样做的好处是,它使消息免于经过许多步骤(例如反序列化、处理程序查找等),因此速度非常快。

当然,这完全由您来实现您的负载平衡算法。它可以非常简单,只需从一组队列名称开始,然后在它们之间简单地 round-robin