【问题标题】:Custom ActiveMQ Producer Port自定义 ActiveMQ 生产者端口
【发布时间】:2015-05-18 10:05:15
【问题描述】:

我已经实现了一个 JMS 生产者和消费者,它们部署在两个不同的主机中,都在一个 DMZ 中。 Here 我阅读了如何为生产者定义自定义主机和端口。但我不明白我必须把那条线放在哪里。

这是我的代码:

Connection connection = null;
    try{

        System.out.println("Connecting to "+getBrokerUrl());
        connection = (new ActiveMQConnectionFactory(getBrokerUrl())).createConnection();
        connection.start();

        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Topic topic = session.createTopic(this.topicName);

        TextMessage txtMsg = session.createTextMessage();
                    txtMsg.setText(msg);
                    txtMsg.setJMSType(msgType);

        MessageProducer producer = session.createProducer(topic);
                        producer.send(txtMsg);

    }
    catch(Exception e){
        System.out.println("Error: " + e.getMessage());
    }
    finally{
        try{
            connection.close();
        }
        catch(JMSException je){
            System.out.println("Unable to close connection: "+je.getMessage());
        }
    }

谁能帮帮我?

【问题讨论】:

  • Doing tcp://myBrokerHost:61616/localhost:60606 我得到以下错误:java.net.ConnectException: Invalid Argument 我认为问题是 localhost 的分辨率

标签: java jms port activemq producer


【解决方案1】:

应该在您传递 getBrokerUrl() 结果的 ActiveMQConnectionFactory 实例中:

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost");

【讨论】:

  • 如果我将 getrokerUrl() 替换为 "vm://localhost" 如何指定 brokerUrl?
  • 应该是你的网址,这只是一个例子
  • 所以该行应该变成:ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://myBrokerHost:61616/localhost:60606"); 并且生产者应该从端口 60606 在 myBrokerHost 上发布?
  • 为每个主机创建单独的ActiveMQConnectionFactory和单独的MessageProducer
  • 也许我无法正确解释问题...我只有一个从生产者 (localhost) 到代理 (myBrokerHost) 的连接。代理正在侦听默认端口 61616;如何强制本地主机上的生产者从特定端口(例如 60606)发送消息?
猜你喜欢
  • 2015-01-02
  • 1970-01-01
  • 2011-03-12
  • 2012-01-10
  • 1970-01-01
  • 2012-08-04
  • 2017-09-14
  • 2014-11-20
  • 2015-10-03
相关资源
最近更新 更多