我們處於一種情況,我們的組件之一是在Nservice總線2.6中開發的。 我們正在努力開發一個使用NSB 3.2的新組件,該組件將從舊服務中消耗。 我們遇到了從NSB 3.2到NSB 2.6組件共享合同的問題。 我們不能馬上遷移舊系統到NSB 3.2,因爲它會很多工作。 有沒有人有類似的問題?NService 2.6消耗Nservice 3.0合同
1
A
回答
2
特別是如果你想爲你的3.2消息協定使用Unobtrusive Mode,那麼你會碰到NServiceBus 2.6對於引用NServiceBus.dll版本2.6來訪問IMessage接口的硬性要求。
當然,2.6沒有IEvent和ICommand的概念。
一個解決方案是爲您的3.2消息合約程序集提供雙重項目。
MyPublisher.Events-2-6.csproj
MyPublisher.Events-3-2.csproj
每個項目將引用相同的C#文件,但2.6版本將引用2.6 NServiceBus.dll,而3.2版本將引用無論是3.2版本,或者如果使用不顯眼,也許包括額外的文件定義特定於彙編程序的IEvent,ICommand和IMessage接口。當然,您也可以使用名稱空間名稱或其他度量標準的條件來定義這些條件並跳過該步驟。
那麼你可能需要的最後一件事是在您的郵件合同指定版本之間的差異有些#if
塊,例如:
#if NSBGT3
public void MyEvent : IEvent
#else
public void MyEvent : IMessage
#endif
{
// properties
}
全面披露:我沒有嘗試這樣做還沒有我自己,我只是一直認爲這是我將如何去做。試一試併發布一些消息,然後檢查它們,看看消息XML中關於消息適用的類型的內容。這會讓你更好地瞭解NServiceBus 2.6是否能夠正確接受它們,尤其是在關注多態消息處理的時候。當然你也想用3.2客戶端和2.6客戶端進行測試。
祝你好運!
0
我建議在新系統的解決方案連接舊系統的類文件,這樣,他們將與新的NServiceBus二進制文件進行編譯,你會避免版本衝突。
相關問題
- 1. NService總線消息大小
- 2. Nservice bus sagas實現
- 3. NService總線和GAC
- 4. NService總線消息延遲問題
- 5. Nservice總線端點命名
- 6. Nservice總線3.0,.Net框架4.0和3.5的MSBuild
- 7. nservice總線發佈不排隊
- 8. Nservice總線隊列未發現異常
- 9. NService總線:問題部署問題
- 10. NService總線 - 獲取隊列上的所有掛起消息
- 11. 使用NService總線導入數據
- 12. NService總線3測試版中的MsmqSubscriptionStorageConfig
- 13. Winserver 2012上的Nservice總線安裝
- 14. 將NService總線從1.9更新到2.0?
- 15. NService總線消息不按順序發送(即發送時)
- 16. 使用NService Web服務橋接器的請求/答覆
- 17. NService巴士3.2 - 自定義IManageMessageFailures和單反
- 18. NService總線調度程序示例項目
- 19. 使用集羣數據庫的NService總線分配器
- 20. 在調用Handle()之前使用Nservice總線從MSMQ中讀取消息體(raw xml)
- 21. 內存消耗,同時在
- 22. 消耗去
- 23. 從NServiceBus 2.6遷移到NServiceBus 3.0
- 24. 獲取對象 - Cocoapod API在斯威夫特消耗3.0應用
- 25. 內存消耗
- 26. Node-RED和MQTT上的同步消耗
- 27. 消耗來自不同遠程位置
- 28. 消耗的Android
- 29. Boost.Flyweight內存消耗
- 30. 需要錯開消耗的外部API的軌道消耗