Я просматриваю образцы и читаю документы, но я все еще не уверен, как настроить ребус для моего сценария (или что использование шины подходит).
У меня есть один производитель задач, скажем, 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();
Consumer config so far:
<rebus inputQueue="calcserver1.input" errorQueue="calcserver1.error" workers="1" maxRetries="5">
<endpoints>
<add messages="Messages.RecalculateContractMessage, Messages" endpoint="[email protected]"/>
</endpoints>
Configure.With(adapter)
.Logging(l => l.Log4Net())
.Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
.MessageOwnership(d => d.FromRebusConfigurationSection())
.CreateBus()
.Start();
adapter.Bus.Subscribe<RecalculateContractMessage>();
I cant seem to configure this setup, it does not really matter if I use msmq or sqlserver.
- Подойдет ли здесь rebus (или любое другое решение типа сервисной шины)?
- Должен ли я использовать публикацию/подписку или обычный шаблон отправки? И повлияет ли этот выбор на обработку сообщений только одной конечной точкой или несколькими?
- Может ли кто-нибудь указать мне на хороший пример или объяснить, как настроить этот сценарий?