【发布时间】:2021-12-06 07:39:33
【问题描述】:
ActiveMQ 中 Java NIO 传输连接器与 PoolConnectionFactory 的不同用例是什么。两者都服务于连接池。我想使用数千个客户端连接到代理并为每个客户端维护一个单独的队列。在场景中这两种情况的用例在哪里?
【问题讨论】:
标签: multithreading jms activemq connection-pooling nio
ActiveMQ 中 Java NIO 传输连接器与 PoolConnectionFactory 的不同用例是什么。两者都服务于连接池。我想使用数千个客户端连接到代理并为每个客户端维护一个单独的队列。在场景中这两种情况的用例在哪里?
【问题讨论】:
标签: multithreading jms activemq connection-pooling nio
NIO 传输在低级别使用比池连接工厂性能更高的选择器。 这意味着当池等待每个连接时,如果有任何新数据准备好,它会收到通知。对于您的用例,我强烈建议您使用 NIO 连接器
【讨论】:
NIO 传输连接器是一个服务器端传入连接 API,它利用基于选择器的事件循环来共享多个活动连接的负载,通常在正常传输连接器上,每个连接创建一个线程来处理导致更高线程的 IO当大量连接处于活动状态时计数。
PooledConnectionFactory 是一种客户端设备,它提供一个或多个打开连接池,应用程序代码可以使用这些连接池来减少连接创建/销毁事件的数量,从而在某些情况下加快客户端代码并降低开销在远程代理上,因为它不需要处理来自模型导致这种行为的应用程序的连接创建/销毁事件。根据您编写应用程序的方式或您拥有的 API 分层(例如 Camel 或 Spring 等),池可能会或可能不会受益。
这两件事没有关系,不应该相互等同。
【讨论】: