类似mq的Java库/框架,用于处理具有容错和重注入大消息的大数据



需求是:几个服务产生大量带有数据流的请求(每个请求1-10兆字节),几个消费者自动处理这些请求。

所以请求数据不能分割。关键的需求是,如果某个消费者处理请求失败——这个请求必须被重新注入到队列中并发送给不同的消费者。处理单个请求可能需要数十分钟。消费者可能在处理过程中"死亡",因此需要某种类型的任务监视。

我考虑了这么多

  • http://kafka.apache.org/
  • http://storm-project.net/
  • http://activemq.apache.org/
  • http://activemq.apache.org/apollo/

但是它们似乎都不符合我的要求。有什么建议吗?

关于您的需求(每个请求> 1 MB,处理> 10分钟)…它还在发短信吗?

我会把它放在一个数据库(RDBMS)。如果不接受轮询,我会考虑使用数据库中的触发器/存储过程。用Scala编写的存储过程在Oracle和PostgreSql中可以完美地工作。

我不能说activemq,但是在kafka和storm之间我会选择storm。不清楚你说处理请求失败是什么意思,但如果storm worker完全失败(即不响应心跳),storm master (nimbus)可能会将任务从死亡的worker重新分配给另一个(也许,在不同的机器上)。

参见理解Storm拓扑的并行性

Kafka是一个非常简单的消息代理,如果没有一些高层协调,它就无法完成你提到的开箱操作。

最新更新