MDB
バージョン5.13.3を実行しているスタンドアロンのActiveMQ-Serverに接続するために、組み込みのActiveMQ Artemisを使用してwildfly 10サーバーに接続しようとしています。Artemis は、サポートされている ActiveMQ プロトコルのいずれとも通信できないようです。
ActiveMQ スタンドアロン ブローカーには次のものがありますtransportConnectors
。
<transportConnectors>
<transportConnector name="auto" uri="auto://localhost:5671?protocolDetectionTimeOut=5000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="http" uri="http://0.0.0.0:8180?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600" />
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
Wildfly MessageBeanには次のものがありますAnnotation
。
@MessageDriven(activationConfig =
{
@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"),
@ActivationConfigProperty(propertyName="destination", "TestDestination"),
@ActivationConfigProperty(propertyName="clientID", propertyValue = "test"),
@ActivationConfigProperty(propertyName="connectionParameters", propertyValue = "host=127.0.0.1;port=5671"),
@ActivationConfigProperty(propertyName="connectorClassName", propertyValue = "org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory"),
@ActivationConfigProperty(propertyName="acknowledgeMode", propertyValue="Auto-acknowledge")
}, mappedName = "TestDestination")
public class MessageProcessingBean implements MessageListener {
接続先として選択したコネクタに応じて、ActiveMQ サーバーでさまざまなエラー メッセージが表示されます。
auto
-endpointに接続すると、次のメッセージが表示されます。
エラー | 接続を受け入れることができませんでした: java.lang.IllegalStateException: ワイヤ形式を検出できませんでした
wildfly 側にエラーはありません。
Openwire
-endpointに接続すると、次のメッセージが表示されます。
警告 | トランスポート接続: tcp://127.0.0.1:45000 に失敗しました: java.io.IOException: 不明なデータ型: 77
これにより、ワイルドフライ側でもエラーが発生します。
17:04:23,384 ERROR [org.apache.activemq.artemis.core.client] (Thread-16 (ActiveMQ-client-netty-threads-1716275972)) > AMQ214013: パケットのデコードに失敗しました: java.lang.IllegalArgumentException: AMQ119032 : 無効なタイプ: org.apache.activemq.artemis.core.protocol.core.impl.PacketDecoder.decode(PacketDecoder.java:413) で 1 org.apache.activemq.artemis.core.protocol.ClientPacketDecoder.decode(ClientPacketDecoder) で.java:60) org.apache.activemq.artemis.core.protocol.ClientPacketDecoder.decode(ClientPacketDecoder.java:39) org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl) .java:324) org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl$DelegatingBufferHandler.bufferReceived(ClientSessionFactoryImpl.java:1105) で org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:265) で io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) で io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java) :294) io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846) で io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) で io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) io java.lang.Thread.run(Thread.java: 745)実行 (Thread.java:745)実行 (Thread.java:745)
これを続けて、すべてのエンドポイントでエラー メッセージを受け取ることができました。実際、ActiveMQ-Artemis は、ActiveMQ でサポートされていないデータ形式で送信しています。
ActiveMQ-Artemis をスタンドアロンの ActiveMQ-Server に接続するには、どの手順を実行する必要がありますか?