我使用Rebus
与MSMQ
。我已经尝试了Rebus的一个场景,我的生产者在不同的机器上向消费者发送消息,它工作得很好。
现在我需要使用多个消费者,并且需要在它们之间分配负载。我在生产机器http://mookid.dk/oncode/archives/3621中运行了样品。但是我从第一行的负载平衡器中得到了以下异常:
我在本地机器上有一个名为distributor的队列,并且我的工作队列存在并且它们的名称是正确的
"无法加载类型'Rebus.Logging "。RebusLoggerFactory'从程序集Rebus, Version=2.0.1.0, Culture=neutral,都必须为空。":"Rebus.Logging.RebusLoggerFactory"
你能帮我解决这个问题吗?
问题是负载均衡器是旧的,不工作与"Rebus 2"(这是Rebus版本0.90.0及以上)。
你可以很容易地用Rebus实现一个负载均衡器,因为你可以简单地创建一个端点,使用Rebus内置的传输消息转发功能。
这个答案演示了如何在配置Rebus时通过调用AddTransportMessageForwarder
来配置传输消息转发。
这样做的好处是,它节省了消息经过许多步骤(例如,反序列化,处理程序查找等),因此它非常快。
当然,这完全取决于你实现你的负载平衡算法。它可以非常简单,可以简单地从一个队列名称数组开始,然后简单地在它们之间循环。