2013-04-25 71 views
2

我正在嘗試爲appharbor應用程序找到最佳消息隊列解決方案。大多數人都認爲你有一個安裝了MSMQ和DTC的Windows環境,我不相信這個應用程序環境提供了這個環境。適用於appharbor的最佳ESB /消息隊列

我希望能和ravendb一起工作,因爲這是我們使用的數據庫。一些只依賴於烏鴉的人會是理想的,特別是如果它與我們現有的工作單元相結合的話。也就是說,當我們的控制器操作中調用保存更改時,這些消息將保存在同一個事務中。

它還需要一個在控制檯應用程序中用於後臺處理的主機。

理想情況下,我希望在開發環境中也能「正常工作」。以烏鴉爲例,我們在開發過程中使用嵌入式模式,我希望不需要安裝的東西。

我看過nServicebus,它似乎不符合這些條件,因爲它需要一個傳輸(MSMQ,SQL等),而且大部分文檔都是過時的。

我也看過犀牛服務巴士,但是有一個明顯缺乏文檔和社區。我也不確定它是否完全依賴ravendb。

我查看的其他人似乎都很重,需要在開發環境中運行安裝和配置。

編輯:其他選項,是實現我們自己的。

+0

由於您正在評估各種選項,您可以查看我的FOSS服務總線項目:https://shuttle.codeplex.com/ ---沒有用於ravendb的'IQueue' /'IQueueFactory'實現,但是有一個可用作模板的sql服務器。如果你願意,你的實現可以合併到其他人使用的穿梭機中。只是一個想法:)我想你也可以爲NServiceBus實現ravendb傳輸。 – 2013-04-25 04:01:22

回答

2

首先,恭喜您在StackOverflow上成爲第1000個NServiceBus問題!其次,如果您要使用SQL來保存您的業務數據,那麼您可以在所有消息都經過表(而不是隊列)的同一SQL上運行NServiceBus,然後您就不需要DTC 。第三,如果你確實想要用RavenDB作爲你的NServiceBus傳輸器,你必須在它上面實現ISendMessages和IReceiveMessages接口,但是我相信社區中的某個人已經開始研究這個接口了,所以你可能會與他們聯合。

最後,我不建議現在編寫自己的ESB--而不是當已經有很多好的選擇時。您提到了社區和文檔的問題 - 在編寫您自己的基礎架構時往往處理得最差。

+0

謝謝,如果我知道這將是數字1000,我可能會用更好的東西來彌補:)我進一步研究了創建一個烏鴉運輸系統,有點創建自定義工作單元等等。我認爲ESB的核心問題是它們是「要使用的系統」,而不是「庫與之結合」,如果這樣做合理的話。這個特定系統的需求是相當有限的(單向消息隊列),所以我會試圖實現我自己的。 – flukus 2013-04-27 06:02:33

+0

NServiceBus已經爲RavenDB提供了一個工作單元 - 只需將其插入即可。無論如何,您可能需要一些工作單元來實現自己的實現。 – 2013-04-30 08:22:20