我已经提出了类似的问题,并且得到了很好的回复..但我的要求似乎有足够的不同,可以单独提出。
Camel Aggregator虽然很棒,但并不打算为我剪掉它。我需要聚合交换数据,当我达到一定的大小时,将其转发到队列中。当发生这种情况时,我可以确认队列中的原始源消息。基于环境原因,聚合器的持久性选择实际上不是一种选择。没有rdms,其他选项将是本地管理状态。如果路线宕机,或者那个盒子那么我需要能够进行处理,如果我在那个数据库中有麻烦,那么它就是一个恢复工作。谢谢ZK和骆驼的融合!
我基本上认为我需要实现一个处理器/或一个bean(有什么微妙的区别?),它们会接受交换并将它们放在一个映射中。当我在连接的交换机上向前移动一个大小到达端点时,然后以某种方式确认所有消息。
我想知道的是我用什么api来控制交换以有效地阻止交易,并且可以提取我需要以后能够获得的信息。
任何人都可以提供一些指导并指出我感兴趣的对象的相关功能吗?
我对此有一个很好的简单想法。我打算扩展Rabbit *类,特别是RabbitConsumer doHandleDelivery,并让我的点头聚合。一旦聚合完成,这将调用Exchange exchange = consumer.getEndpoint().createRabbitExchange(envelope, properties, body);
。根据{{1}}的结果,它会响应或重新发送所有消息。从表面上看,我会说它一切都会很好。好的,我需要在RabbitConsumer中进行一些同步..
答案 0 :(得分:0)
为了给peeps一个更新,我建立了自己的批处理rmq消费者。
非常简单,但只需要确保我在onXXX功能上构建,这样路线就可以暂停/恢复停止并启动。