ActiveMQ "Classic" to ActiveMQ Artemis迁移/HTTP传输配置(使用HTTP隧道使用和生成消息)



我使用HTTP而不是TCP连接到Artemis有问题。

在我的ActiveMQ上有" classic "使用HTTP连接到代理的配置,如下所示:

<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?transport.maximumConnections=1000&amp;transport.wireFormat.maxFrameSize=104857600&amp;transport.keepAlive=true&amp;transport.trace=true&amp;transport.useKeepAlive=true&amp;transport.connectionTimeout=30000" />
<transportConnector name="http" uri="http://0.0.0.0:9090?transport.maximumConnections=1000&amp;transport.wireFormat.maxFrameSize=104857600&amp;transport.keepAlive=true&amp;transport.trace=true&amp;transport.useKeepAlive=true&amp;transport.connectionTimeout=30000" />
</transportConnectors>

有了这个配置,我可以使用例如http://localhost:9090连接到我的ActiveMQ。

现在我正在迁移到Artemis 2.28.0版本,当我尝试配置http连接器时:

<connectors>
<connector name="http-connector">http://0.0.0.0:8080?httpEnabled=true</connector>
</connectors>

但是当我们启动代理时,出现了schema未找到的错误:

java.lang.RuntimeException: Schema http not found
at org.apache.activemq.artemis.core.config.ConfigurationUtils.parseConnectorURI(ConfigurationUtils.java:190)
at org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser.parseConnectorTransportConfiguration(FileConfigurationParser.java:1622)

我们也尝试配置它使用tcp连接与httpEnabled=true根据Artemis文档(见"配置Netty HTTP"),但这也没有错,当我们尝试使用HTTP连接。

我们已经有多个消费者连接到ActiveMQ "Classic"通过HTTP,我们的目标是做一个从"经典"的DNS切换。而不影响我们的消费者,因为很难与所有人交谈。这是一个场景:http://broker:8080现在指向ActiveMQ "Classic"我们想把这个域重新路由到Artemis。

不幸的是,这是不可能的,因为Artemis不支持OpenWire客户端使用的HTTP传输。正如您在文档中发现的那样,Artemis具有通过HTTP为核心协议建立隧道通信的等效特性,但它与OpenWire不兼容。

一般来说,HTTP不是一个很好的消息传递协议,很少被推荐。在"正常"的特殊情况下,它可以作为一种权宜之计。由于某种原因无法连接。

最新更新