2014-01-22 90 views
3

以下是Camel in Action書中給出的生產者和消費者的定義。Apache Camel Producer消費者術語dillemas

消費者可能正在接收來自外部服務的消息,輪詢 以獲取某些系統上的消息,甚至創建消息本身。然後該消息 流經處理組件,該處理組件可以是企業集成模式(EIP),處理器,攔截器或一些其他自定義創建。消息 最終被髮送到作爲生產者角色的目標端點。路由可能有許多處理組件,它們修改消息或將其發送到另一個位置,或者它可能沒有,在這種情況下,它將是一個簡單的管道。

我的疑惑:

  1. 什麼是外部服務?
  2. 消費者如何在生產者生產消息之前進入遊戲。我的理解是生產者生產並轉換消息以便消息與消費者端點兼容。
  3. 爲什麼消費者必須做生產者的工作(即轉變消息並將其再次發送給製片人?)它不應該成爲反面嗎?

謝謝!

回答

3

外部服務可能是,例如,外部Web服務,外部REST服務,EJB等等。

消費者可能正在使用這些服務中的任何一個,或者它可能正在偵聽要在文件系統上的特定位置創建的文件(或多個文件),它可能從消息隊列(JMS)等等 - 有無限的可能性僅限於可用的組件和端點。

基本上,用apache駱駝,你正在設計一個消息總線(ESB),對不對?你可以這樣思考 - 「消費者」從外部世界獲取東西並將其放到公共汽車上。然後,你的信息將經過各種途徑(很可能通過EIPs被翻譯和修改),然後最終它必須到現實世界中的其他地方 - 那就是生產者這是否是工作?

消費者消費在公共汽車上/生產者生產出公共汽車。

通常情況下,你不需要考慮太多的端點是否被作爲製片人作爲一個消費者操作 - 只需使用.from.to根據您的需要,一切都應該從那裏工作的罰款。

也有這樣的答案讀:Apache Camel producers and consumers

我希望這有助於!

+0

@vikingsSteve,謝謝!很好的解釋。 – bks4line