HornetQ JMSException: Failed to create factory session

I am trying to directly create JMS resources without using JNDI in REMOTE HORNETQ.

I am running my test code in the Eclipse IDE. Configure my class path to use the HornetQ 2.2.5 libraries.

The goal of HornetQ is version 2.1.2. Final, I decided that they should be compatible in the reverse order, maybe wrong?

Ok, so I read the online documentation and followed the example of connecting to a remote JMS server without using JNDI. I keep getting the following exception. I'm not sure what I missed, but I believe that everything is set up correctly. Can someone point out what's missing here? Thanks in advance.

JMSException: Failed to create factory session

Connector on hornetq-configuration.xml:

<connector name="netty"> <factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class> <param key="host" value="${10.100.111.222}"/> <param key="port" value="${hornetq.remoting.netty.port:5445}"/> </connector> 

Acceptor:

  <acceptor name="netty"> <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class> <param key="host" value="${10.100.111.222}"/> <param key="port" value="${hornetq.remoting.netty.port:5445}"/> </acceptor> 

My test code is: Connection connection = null;

  try { Queue queue = HornetQJMSClient.createQueue("TESTQ"); Map<String, Object> connectionParams = new HashMap<String, Object>(); connectionParams.put(TransportConstants.PORT_PROP_NAME, 5445); connectionParams.put(TransportConstants.HOST_PROP_NAME, "10.100.111.222"); TransportConfiguration transportConfiguration = new TransportConfiguration(NettyConnectorFactory.class.getName(), connectionParams); ConnectionFactory factory = (ConnectionFactory) HornetQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF, transportConfiguration); System.out.println("debug: " + factory.getClass()); connection = factory.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(queue); TextMessage message = session.createTextMessage("This is a test message"); System.out.println("Sent message: " + message.getText()); producer.send(message); } finally { if (connection != null) { try { connection.close(); } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 

I get the following exception

 SEVERE: Failed to create netty connection java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at org.jboss.netty.channel.socket.oio.OioClientSocketPipelineSink.connect(OioClientSocketPipelineSink.java:114) at org.jboss.netty.channel.socket.oio.OioClientSocketPipelineSink.eventSunk(OioClientSocketPipelineSink.java:74) at org.jboss.netty.channel.Channels.connect(Channels.java:541) at org.jboss.netty.channel.AbstractChannel.connect(AbstractChannel.java:218) at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:227) at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:188) at org.hornetq.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:450) at org.hornetq.core.client.impl.ClientSessionFactoryImpl.getConnection(ClientSessionFactoryImpl.java:1016) at org.hornetq.core.client.impl.ClientSessionFactoryImpl.getConnectionWithRetry(ClientSessionFactoryImpl.java:897) at org.hornetq.core.client.impl.ClientSessionFactoryImpl.connect(ClientSessionFactoryImpl.java:212) at org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:602) at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:611) at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:121) at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:116) at com.ws.proto.ManualJMS.main(ManualJMS.java:39) Oct 19, 2011 1:18:50 PM org.hornetq.core.logging.impl.JULLogDelegate warn WARNING: Tried 1 times to connect. Now giving up on reconnecting it. Exception in thread "main" javax.jms.JMSException: Failed to create session factory at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:615) at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:121) at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:116) at com.ws.proto.ManualJMS.main(ManualJMS.java:39) Caused by: HornetQException[errorCode=2 message=Cannot connect to server(s). Tried with all available servers.] at org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:619) at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:611) ... 3 more 
+6
source share
1 answer

As for compatibility: we did not have client compatibility until version 2.2.5+. If you try the client on 2.2.2 and the server in 2.2.5, you are likely to get a version mismatch exception.

We strive to always be compatible with 2.2.5 +

And you have a typo in your configuration:

  <connector name="netty"> <factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class> <param key="host" value="10.100.111.222"/> <param key="port" value="${hornetq.remoting.netty.port:5445}"/> </connector> 

We use syntax for properties and default values. You can, for example, define the variable MY_IP and use it as:

"$ {MY_IP: 10.100.111.222}"

If MY_IP is null, you will get 10.100.111.222

But "$ {10.100.111.222}" doesn't mean anything.

+8
source

Source: https://habr.com/ru/post/899643/


All Articles