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

时间:2013-05-21 14:21:59

标签: java scala mq

要求是:多个服务使用数据流产生大量请求(每个请求1-10兆字节),并且有几个消费者以原子方式处理这些请求。

因此请求数据无法拆分。关键要求是,如果某个消费者无法处理请求 - 此请求必须重新注入到队列中并发送给不同的消费者。处理单个请求可能需要几十分钟。消费者可能在处理过程中“死亡”,因此需要进行某种任务监控。

到目前为止我考虑过

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

2 个答案:

答案 0 :(得分:2)

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

另见Understanding the parallelism of a Storm topology

Kafka是一个死去的简单消息经纪人,如果没有一些高级别的协调,它就无法做你已经开箱即用的事情。

答案 1 :(得分:2)

关于您的要求(每个请求大约1 MB,处理> 10分钟)......是否还在发送消息?

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