Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jms HornetQ:远程客户端连接到在VM中运行的HornetQ服务器_Jms_Hornetq_Remote Client - Fatal编程技术网

Jms HornetQ:远程客户端连接到在VM中运行的HornetQ服务器

Jms HornetQ:远程客户端连接到在VM中运行的HornetQ服务器,jms,hornetq,remote-client,Jms,Hornetq,Remote Client,我是大黄蜂队的新手,我已经尝试了2-3天,但是没有希望了。 我需要创建一个客户端,它将从HornetQ服务器(在虚拟机中)接收消息,但我的客户端似乎无法连接到远程HornetQ服务器 预期: 1 HornetQ stand-alone and sender (in VM) 2 clients as receivers (in real machine) 发件人: Map<String, Object> connectionParams = new HashMap<String

我是大黄蜂队的新手,我已经尝试了2-3天,但是没有希望了。 我需要创建一个客户端,它将从HornetQ服务器(在虚拟机中)接收消息,但我的客户端似乎无法连接到远程HornetQ服务器

预期:

1 HornetQ stand-alone and sender (in VM)
2 clients as receivers (in real machine)
发件人:

Map<String, Object> connectionParams = new HashMap<String, Object>();
//localhost(127.0.0.1 where is my VM locates)
//port 5445 (default port of HornetQ)
connectionParams.put(TransportConstants.HOST_PROP_NAME, "localhost");
connectionParams.put(TransportConstants.PORT_PROP_NAME, 5445);
TransportConfiguration transportConfiguration = new TransportConfiguration(NettyConnectorFactory.class.getName(), connectionParams);
//Create ConnectionFactory
ConnectionFactory cf = new HornetQTopicConnectionFactory(false, transportConfiguration);
//Create Connection
connection = cf.createConnection();
//Create Session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
connection.start();
//Create Topic
topic = HornetQJMSClient.createTopic("myTopic");
//Create Producer
MessageProducer producer = session.createProducer(topic);
在VM中运行I./run.sh时(发送方工作正常) 然后我在真正的机器上运行客户机(接收器),但它无法连接到HornetQ服务器(在VM中运行)


谢谢你的任何建议。

现在我尽量保持简单

  • 我在其他PC(10.88.106.223)中启动HornetQ,并在HornetQ-configuration.xml中更改接收器
  • param key=“host”value=“10.88.106.223”

    param key=“port”value=“5445”

    它的工作,似乎我已经为虚拟机(127.0.0.1)选择了错误的IP。
    祝您度过愉快的一天。

    当您发布多行代码时,请用注释进行解释。感谢@Andy897对其他人的指导。如果您也发布您的导入声明,那就太好了。
        Properties p = new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.naming.remote.client.InitialContextFactory");
        p.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
        p.put(Context.PROVIDER_URL, "remote://localhost:5445");
        p.put(Context.SECURITY_PRINCIPAL, "username");
        p.put(Context.SECURITY_CREDENTIALS, "password");
        InitialContext context  = new InitialContext(p);
        //Create ConnectionFactory
        ConnectionFactory factory = (ConnectionFactory)context.lookup("/ConnectFatory");
        //Create connection
        connection = (Connection) factory.createConnection();
        //Create session
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        topic = (HornetQTopic) HornetQJMSClient.createTopic("myTopic");
        //Create consumer
        MessageConsumer consumer = session.createConsumer(topic);
    
    javax.naming.NamingException: Failed to connect to any server. Servers tried: [remote://localhost:5445]
      at org.jboss.naming.remote.client.HaRemoteNamingStore.failOverSequence(HaRemoteNamingStore.java:213)
      at org.jboss.naming.remote.client.HaRemoteNamingStore.namingStore(HaRemoteNamingStore.java:144)
      at org.jboss.naming.remote.client.HaRemoteNamingStore.namingOperation(HaRemoteNamingStore.java:125)
      at org.jboss.naming.remote.client.HaRemoteNamingStore.lookup(HaRemoteNamingStore.java:241)
      at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:79)
      at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:83)
      at javax.naming.InitialContext.lookup(InitialContext.java:411)
      at com.dtv.apg.hornetq.SubA.run(SubA.java:70)
      at java.lang.Thread.run(Thread.java:722)