簡體   English   中英

ESB /消息隊列快速入門

[英]ESB/Message Queue quick start

我需要實現一個演示系統以證明概念。 基本上,系統描述可以簡化為2個模塊:

  1. 模塊1發送請求
  2. 模塊2拾取它們,進行處理並將響應發送回

注意:這些模塊位於同一個Intranet中,因此我可能希望該協議比http更快。我想到了以下選項:

  1. 消息隊列
  2. ESB
  3. 的Protobuf

理想情況下,該系統將(但不僅限於)基於Java,可在Linux RH上運行並且能夠線性擴展,但是性能超出了POC的范圍。 我在看ServiceMixActiveMQ 我的想法是在Java這些模塊中實現。 該架構將是消息驅動的。 模塊將通過消息隊列或服務總線進行通信。

“消費者”將請求作為消息發送到消息隊列,“生產者”按特定的訂閱主題進行選擇,處理請求並將響應發回到同一隊列。 在“響應”主題上訂閱的“消費者”從隊列中選擇結果。 結束。

我的問題是:

  1. 為了實現上述功能,還需要考慮哪些其他好的選擇(協議,體系結構,現有庫)?
  2. 為了實現上述目標,我嘗試查看《 ServiceMixESB用戶指南》,但似乎為了獲得類似於上述運行的目標,我學習了一些我不熟悉的東西:JBI,NMR,Karaf,Camel等,而我確實沒有時間去做。 因此,我想知道:ESB / Message Queue“ Hello World”應用程序是否有任何快速入門指南或Java示例代碼可幫助您使所有事情動起來?

帶有XML消息的ActiveMQ應該足夠了,除非您的消息很大且很多,在這種情況下,我會選擇protobuf(免責聲明:我在上一個項目中使用了它們)。

事實上,我可能會在ActiveMQ上進行一些amqp實現,例如Apache Qpid(免責聲明:也在不久前使用過)。 但這更多是個人原因。

protobuf的缺點是您需要了解一些有關它們的知識,網絡上遍布世界,但是一旦您嘗試面對“真正的問題”,這並不太容易。 您還需要一個maven插件來構建和編譯文件,除非您想手動執行。

ActiveMQ僅僅是JMS提供程序,我相信您已經看過以下示例:

你好世界ActiveMQ

在實現方面,當module1發送請求時,您要確保該響應將被同一模塊讀取。 我建議使用臨時隊列。 將請求發送到某個隊列(還發送臨時隊列名稱,例如預期響應將到達的臨時隊列名稱); module2處理該消息並將響應發送到臨時隊列,模塊1在其中使用消息偵聽器讀取該響應。

現在,您必須非常快地刪除此臨時隊列,以免堆積,還要檢查ActiveMQ是否為其提供了唯一的名稱。

帶有簡單參數auto-delete = true的QPID中 ,當沒有活動的偵聽器時,刪除隊列時,我不知道如何在ActiveMQ中進行處理,但是應該有一種方法。

我的0.02美元

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM