具有多线程的RabbitMQ RPC生产者

时间:2017-03-09 15:06:31

标签: java rabbitmq

如何在多线程环境中实现RPC调用? 在这里的基本教程中:https://www.rabbitmq.com/tutorials/tutorial-six-java.html,在多线程环境中,我看到两个问题:

- 如果所有人都在不同的线程(包括构造函数),我们为每个线程创建一个回复队列,我不知道这是一个好主意(不是吗?)

- 如果只有fibonacciRpc.call(" 4")在不同的线程中,则回复队列的使用者可以使用不良回复,并且此回复的原始使用者将无限期地等待。

我现在没有找到任何解决方案,但也许我不明白。

1 个答案:

答案 0 :(得分:0)

在我的情况下: channel.basicConsume(replyQueueName,true, new DefaultConsumer(channel){} 在内存中导致很多堆大小,只要我不删除通道就不会清除它。

根据Internet,您应该创建一个连接。 每个线程创建一个通道,并在读取响应后为每个通道创建单独的队列并删除队列,如果不这样做,它将在同一个通道中反复创建新队列。

但是新的DefaultConsumer正在创建很多堆内存。

看起来要摆脱这个我必须删除频道。