【发布时间】:2016-10-04 13:32:58
【问题描述】:
我们需要为每个线程创建单独的通道还是为所有线程使用相同的通道?关于连接的同样问题。我们需要为每个线程或单个连接使用不同的连接吗?
当我们在所有线程中使用一个通道和为每个线程使用单独通道时有什么区别?
【问题讨论】:
标签: java queue rabbitmq client producer-consumer
我们需要为每个线程创建单独的通道还是为所有线程使用相同的通道?关于连接的同样问题。我们需要为每个线程或单个连接使用不同的连接吗?
当我们在所有线程中使用一个通道和为每个线程使用单独通道时有什么区别?
【问题讨论】:
标签: java queue rabbitmq client producer-consumer
连接:
根据 java 文档 (https://www.rabbitmq.com/releases/rabbitmq-java-client/v3.6.5/rabbitmq-java-client-javadoc-3.6.5/):
当前的实现对于客户端 API 级别的代码是线程安全的,实际上在内部是线程安全的,但 RPC 调用中的代码除外。
频道:
根据文档(https://www.rabbitmq.com/api-guide.html):
通道实例不能在线程之间共享。应用程序应该更喜欢每个线程使用一个 Channel,而不是在多个线程之间共享同一个 Channel。虽然通道上的某些操作可以安全地同时调用,但有些则不能,并且会导致线路上的帧交错不正确。在线程之间共享频道也会干扰* Publisher Confirms。
【讨论】: