It appears that the netty-connector to the remote client is not happy! For now, I have active my running on my local machine with the standard 616161 port. I followed the directions at https://docs.jboss.org/author/display/WFLY/Connect+a+pooled-connection-factory+to+a+Remote+Artemis+Server
Here is the error:
12:18:50,707 INFO [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 68) AMQ221007: Server is now live
12:18:50,707 INFO [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 68) AMQ221001: Apache ActiveMQ Artemis Message Broker version 1.5.5.jbossorg-008 [default, nodeID=de747bb0-bf64-11e7-9132-887873d0243d]
12:18:50,707 INFO [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 68) AMQ221003: Deploying queue jms.queue.DLQ
12:18:50,739 WARN [org.apache.activemq.artemis.jms.server] (ServerService Thread Pool -- 71) AMQ122005: Invalid "host" value "0.0.0.0" detected for "http-connector" connector. Switching to " Demo-Laptop". If this new address is incorrect please manually configure the connector to use the proper one.
12:18:50,760 INFO [org.wildfly.extension.messaging-activemq] (ServerService Thread Pool -- 71) WFLYMSGAMQ0002: Bound messaging object to jndi name java:jboss/exported/jms/RemoteConnectionFactory
12:18:50,760 INFO [org.wildfly.extension.messaging-activemq] (ServerService Thread Pool -- 70) WFLYMSGAMQ0002: Bound messaging object to jndi name java:/ConnectionFactory
12:18:50,760 INFO [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 69) AMQ221003: Deploying queue jms.queue.ExpiryQueue
12:18:50,776 INFO [org.jboss.as.connector.deployment] (MSC service thread 1-6) WFLYJCA0007: Registered connection factory java:/jms/remoteCF
12:18:50,776 INFO [org.jboss.as.connector.deployment] (MSC service thread 1-3) WFLYJCA0007: Registered connection factory java:/JmsXA
12:18:50,823 INFO [org.apache.activemq.artemis.ra] (MSC service thread 1-3) Resource adaptor started
12:18:50,823 INFO [org.jboss.as.connector.services.resourceadapters.ResourceAdapterActivatorService$ResourceAdapterActivator] (MSC service thread 1-3) IJ020002: Deployed: file://RaActivatoractivemq-ra
12:18:50,823 INFO [org.jboss.as.connector.deployment] (MSC service thread 1-3) WFLYJCA0002: Bound JCA ConnectionFactory [java:/JmsXA]
12:18:50,823 INFO [org.wildfly.extension.messaging-activemq] (MSC service thread 1-7) WFLYMSGAMQ0002: Bound messaging object to jndi name java:jboss/DefaultJMSConnectionFactory
12:18:51,077 ERROR [org.apache.activemq.artemis.core.client] (Thread-0 (ActiveMQ-client-netty-threads)) AMQ214013: Failed to decode packet: java.lang.IllegalArgumentException: AMQ119032: Invalid type: 1
at org.apache.activemq.artemis.core.protocol.core.impl.PacketDecoder.decode(PacketDecoder.java:424)
at org.apache.activemq.artemis.core.protocol.ClientPacketDecoder.decode(ClientPacketDecoder.java:60)
at org.apache.activemq.artemis.core.protocol.ClientPacketDecoder.decode(ClientPacketDecoder.java:39)
at org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:355)
at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl$DelegatingBufferHandler.bufferReceived(ClientSessionFactoryImpl.java:1143)
at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:69)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:134)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:624)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:559)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:476)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
at java.lang.Thread.run(Thread.java:748)
All messaging (both sending and receiving) is to be from the active mq server as the producer/consumer of the messages is legacy using ActiveMQ.
Added to my xml configuration copies from standard-full.xml
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
…
<outbound-socket-binding name="remote-artemis">
<remote-destination host="localhost" port="61616"/>
</outbound-socket-binding>
</socket-binding-group>
<subsystem xmlns="urn:jboss:domain:messaging-activemq:2.0">
<server name="default">
<remote-connector name="remote-artemis" socket-binding="remote-artemis"/>
……
<pooled-connection-factory name="remote-artemis" entries="java:/jms/remoteCF" connectors="remote-artemis" transaction="xa" user="admin" password="admin"/>
</server>
I use a pooled connection factory because the documentation says “that it is essentially a configuration façade for both the inbound and outbound connectors of the Artemis JCA Resource Adapter.” Which is exactly what I need.
My sending code looks like:
@Resource(lookup =" java:/jms/remoteCF")//java:/JmsXA java:jboss/DefaultJMSConnectionFactory
static ConnectionFactory connectionFactory;
@Resource(lookup = "java:jboss/activemq/topic/POOPOITopic")
private static Topic pointsTopic;
try {
if (connectionFactory == null)
{
logger.severe("not finding java:/jms/remoteCF");
}
When I try to send, I get the connectionFactory as null! My MDB looks like
@ResourceAdapter("remote-artemis")
//An MDB can be configured to use a pooled-connection-factory (e.g. using @ResourceAdapter).
// In this context, the MDB leverages the inbound connector of the Artemis JCA RA. Other kinds of clients
// can look up the pooled-connection-factory in JNDI (or inject it) and use it to send messages. In this context, such a client would leverage the outbound connector of the Artemis JCA RA.
@Inject
@JMSConnectionFactory("java:/jms/remoteCF")
private JMSContext context;
What am I missing? All help is greatly appreciated.
I had the same issue (also following wildfly documentation) but this worked fine.
Be aware that what you get here is not JMSContext but ConnectionFactory. It can do all the same things it's just a different API.