我正在浏览示例并阅读文档,但我仍然不确定如何为我的场景配置 rebus(或者使用总线很合适)。
我有一个任务生产者要做,比如说 ImportOrder 和 CalculateOrderPrice
我想转储来自生产者的消息并将大量这些消息排队。我想要两个监听 ImportOrder 的客户端和 10 个监听 CalculatePriceOfOrder 的客户端。我不希望同一订单同时到达多个端点,我试图分散工作量。
到目前为止的生产者配置:
<rebus inputQueue="publisher.input" errorQueue="publisher.error" workers="1" maxRetries="5">
var adapter = new BuiltinContainerAdapter();
Configure.With(adapter)
.Logging(l => l.Log4Net())
.Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
.Subscriptions(s => s.StoreInXmlFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "rebus_subscriptions.xml")))
.MessageOwnership(d => d.FromRebusConfigurationSection())
.CreateBus()
.Start();
到目前为止的消费者配置:
<rebus inputQueue="calcserver1.input" errorQueue="calcserver1.error" workers="1" maxRetries="5">
<endpoints>
<add messages="Messages.RecalculateContractMessage, Messages" endpoint="publisher.RecalculateContract@se-devws-0007.sirius.local"/>
</endpoints>
Configure.With(adapter)
.Logging(l => l.Log4Net())
.Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
.MessageOwnership(d => d.FromRebusConfigurationSection())
.CreateBus()
.Start();
adapter.Bus.Subscribe<RecalculateContractMessage>();
我似乎无法配置此设置,我使用 msmq 还是 sqlserver 并不重要。
- rebus(或任何服务总线类型的解决方案)听起来很适合这里吗?
- 我应该使用 pub/sub 还是普通的发送模式?如果消息一次仅由一个或多个端点处理,该选择会影响吗?
- 谁能指出我一个很好的例子或解释如何设置这个场景?