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
a
connector

<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。