2013-08-29 70 views
3

我正在嘗試爲該工作找到合適的工具。我已經探索了一些不同的消息隊列,如Kafka,Kestrel等等,我正在尋找具有PULL功能的東西。簡單拉消息隊列

我有一個API(分佈式),將傳入的消息推入隊列。然後我會有工作人員(單獨的機器)從隊列中提取消息。這確保工人不會被淹沒,並且不能處理隊列的負載。

我想知道如果卡夫卡或紅隼支持這種類型的功能

回答

6

卡夫卡在推拉基礎上工作,並且能夠處理大規模實時數據流。正如他們的文檔中所述,Kafka的性能在數據大小方面是非常穩定的,因此保留大量數據不會成爲問題。

用於處理流結賬Storm。其免費的容錯分佈式實時計算系統,非常易於擴展。它的確如你所說(在不同的機器上運行工作人員)。它也支持transactional拓撲。最重要的是,它與Apache Kafka有非常好的整合。

更多關於風暴檢查here

所以通常你可以做的是用他們的消費API,然後將其提供給風暴集羣做休息以分佈式的方式檢索卡夫卡隊列消息。卡夫卡0.8提供了2種類型的API,

  • High Level or consumer group
  • Low level or Simple consumer API

前者提供了一個高層次的抽象的消費數據,並採取很多事情,如線程,錯誤處理的照顧,而後來允許更多地控制消息處理,如多次讀取消息,消息交易等。

High level consumer API example

Simple Consumer example

2

要求的是什麼you're正是設計選擇已經取得了卡夫卡。請參閱關於Push vs. Pull的卡夫卡文檔