从Java中的不同线程确认rabbitMq消息

时间:2013-11-14 12:00:47

标签: java multithreading rabbitmq messaging amqp

我有一个使用Rabbit来分发任务的多层工作模式实现,因此消息通过许多“列表器”之一进入(一个执行器服务,有许多线程调用consumer.basicConsume(),每个线程都有自己的Channel) 。消息在应用程序周围传递,然后在最后阶段由ack侦听器(再次,用自己的ExecutorService运行,具有自己的不同通道)接收它们以进行确认,但是服务器不会获取ack 。我写了一个简单的测试,我在同一个线程和不同的线程中,在他们工作的同一个线程上的不同通道中确认消息,在不同的线程上它们没有,并且不同线程上的相同通道也起作用。

有没有人遇到过这个?我真的不想要保持频道到ID的映射。

1 个答案:

答案 0 :(得分:0)

根本不建议在不同的线程中发送消息,你应该避免这种行为。 这就是文档所说的内容:http://www.rabbitmq.com/api-guide.html#channel-threads