我正在通過示例和閱讀文檔,但我仍然不確定如何爲我的場景配置rebus(或者使用公交車很合適) 。我應該如何爲一個生產者和許多消費者設置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="[email protected]"/>
</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還是普通發送模式?如果消息在一次或幾次只被一個端點處理,那麼這種選擇是否會起作用?
- 任何人都可以給我一個很好的例子或解釋如何設置這個場景嗎?
非常感謝,我閱讀了這個系列文章,他們很棒:)我將從sql server擴展解決方案開始,它聽起來很合適 – Jon
後續問題:假設我們有兩個不同的消息和0。 *每個消息的工作人員。兩個不同的隊列會成爲解決方案嗎?嘗試在同一條總線上處理不同的消息似乎會產生很多問題。 – Jon
我想我現在就明白了,使用bus.Advanced.Routing.Send到特定的隊列並設置每個工作類型以從該隊列中消耗。如果這是建議的方式去,那麼也許我可以貢獻一個樣本,如果你想:) – Jon