Activemq artemis 如何通过JMX或EmbeddedActiveMQ获取有关连接器的信息
对于Activemq artemis 如何通过JMX或EmbeddedActiveMQ获取有关连接器的信息,activemq-artemis,Activemq Artemis,对于acceptors,我可以获得类似embeddedActiveMQ.getActiveMQServer().getAcceptors()或使用AcceptorControl 但是对于连接器我找不到任何方法来获取数据或创建/删除连接器,而不是在JMX或EmbeddedActiveMQ中 我添加到了broker.xmlaconnector <connectors> <connector name="connector1">tcp://192.168
acceptors
,我可以获得类似embeddedActiveMQ.getActiveMQServer().getAcceptors()
或使用AcceptorControl
但是对于连接器
我找不到任何方法来获取数据或创建/删除连接器
,而不是在JMX或EmbeddedActiveMQ中
我添加到了broker.xml
aconnector
<connectors>
<connector name="connector1">tcp://192.168.58.6:61716</connector>
</connectors>
tcp://192.168.58.6:61716
我想我是通过
embeddedActiveMQ.getActiveMQServer().getConnectorsService().getConnectors()
但这返回的大小为0
Artemis 2.16.0版如果使用JMX进行管理,则可以使用
ActiveMQServerControl
上的GetConnectorConfiguration()
方法
如果您使用的是EmbeddedActiveMQ
,则可以使用EmbeddedActiveMQ.getActiveMQServer().getConfiguration().GetConnectorConfiguration().values()
。这将为您提供所配置连接器的集合
在此上下文中,接受器和连接器之间的区别在于接受器是独立的资源,独立于任何其他资源进行部署和管理。另一方面,连接器本质上只是一个配置容器,由其他组件(例如网桥)引用和使用。连接器本身不部署。是否可以直接(而不仅仅是传输配置)部署:1。获取可用运行连接器的对象NettyConnector/InVMConnector
2。在不重新启动代理的情况下创建或删除连接器?或者,您是如何编写连接器的?只是配置容器,而对象(NettyConnector/InVMConnector
)本身并没有创建或运行?这些“正在运行的连接器”位于客户端上,因此您无法从代理获取它们。您可以使用org.apache.activemq.artemis.core.config.configuration#addConnectorConfiguration
添加连接器配置。通过使用org.apache.activemq.artemis.core.config.configuration#getConnectorConfigurations
并修改返回的映射,可以删除连接器配置。我不确定这正是你想要的。如果不是的话,详细解释一下你想要完成什么可能会有帮助。我不理解“运行连接器在客户端”。在doc Write中—“当服务器充当客户机时使用连接器”。当我创建一个从服务器1到服务器2的网桥
时,我在服务器1上创建了一个连接器
,服务器2上有一个接受器
地址和端口,结果表明服务器1充当了客户端。然后在哪台服务器上可以访问“正在运行的连接器”(对象NettyConnector/InVMConnector
)?对于网桥,网桥在代理上运行并充当客户端,它使用您在引用的连接器中配置的URL进行连接。但是,运行的连接器仍在客户端(即网桥)中实际上,您无法直接使用它。BridgeControl
可用于各种管理操作,但您仍然无法访问正在运行的连接器。正如我前面所说的,详细解释您试图实现的目标可能会有所帮助。您对连接器的基本理解可能会有所帮助不正确。我不理解您为什么要访问客户端正在使用的实际运行的连接器。您想对它做什么?它在客户端的控制下。您真的不应该对它做任何事情,而且它也没有管理API。