【问题标题】:Embedded broker Active MQ start嵌入式代理 Active MQ 启动
【发布时间】:2012-06-02 21:10:52
【问题描述】:

我写了一个使用 activemq 嵌入式代理的小程序。程序在一台机器上成功运行,但不能在另一台机器上运行。两台服务器都有 sun os 10 & java 7 以及 activemq 5.5.1。我的意思是不起作用,新的 BrokerService() 构造函数调用不会返回一段时间(几分钟)。片段代码如下所示。

感谢您的建议..

public static void main(String[] args) {

    // .... 
    try {
        p.start("tcp://192.168.4.2:61616");
    } catch (MessagingException e) {
        e.printStackTrace();
    }
    // ....

}


public void start(String brokerAddress) throws MessagingException {
    try {

        System.out.println(">>> initialize 2");
        broker = new JmsBroker(brokerAddress, brokerAddress.substring(6));
        System.out.println(">>> initialize 3");
        broker.start();
        System.out.println(">>> initialize 4");


        messageProducer = new JmsProducer(brokerAddress,
                                          "MESSAGING_IF_NAME",
                                          false,
                                          5000);
        System.out.println(">>> initialize 5");

    } catch (JMSException e) {
        System.out.println(e);
    }

}


public class JmsBroker extends Thread {

private BrokerService       broker;
private Object              lock;
private static final Logger logger = LoggerFactory.getLogger(JmsBroker.class);
private String              connector;


public JmsBroker(String jmsAddress, String brokerName) throws MessagingException {
    broker = new BrokerService(); // !!!!! PROBLEM
    broker.setBrokerName(brokerName);
    broker.setUseJmx(true);
    broker.setUseLoggingForShutdownErrors(true);
    broker.setSchedulerSupport(false);
    broker.setPersistent(false);
    connector = jmsAddress;

    try {
        System.out.println(">>> s1");
        broker.addConnector(connector);
        System.out.println(">>> s2");
        broker.start(true);
        System.out.println(">>> s3");

        while (!broker.isStarted()) {
            Thread.sleep(10);
            System.out.println("BROKER NOT STARTED");
        }

        logger.info("JMS BROKER STARTED");
        System.out.println("JMS BROKER STARTED");
    } catch (InterruptedException e) {
        throw new MessagingException(e);
    } catch (Exception e) {
        throw new MessagingException(e);
    }
}

public void run() {
    try {
        lock = new Object();
        synchronized (lock) {
            lock.wait();
        }
    } catch (Exception e) {
        logger.error("", e);
    }
}

}

【问题讨论】:

  • 如果你下载 amq 独立 dist 会发生什么。并简单地运行它?它还会挂起启动吗?也许日志会告诉你一些提示。
  • 我不太确定“独立 dist”的意思,但如果它意味着运行“activemq start”命令。它的作品不会挂起(但在日志上有一些例外)。
  • 传输失败:java.net.SocketException:无效选项或远程对等方重置套接字 java.lang.ClassNotFoundException:org.apache.activemq.web.filter.ApplicationContextFilter FAILED spring:javax.servlet.UnavailableException : org.apache.activemq.web.filter.ApplicationContextFilter javax.servlet.UnavailableException: org.apache.activemq.web.filter.ApplicationContextFilter java.lang.ClassNotFoundException: org.apache.activemq.util.FilenameGuardFilter FAILED FilenameGuardFilter: javax.servlet .UnavailableException: org.apache.activemq.util.FilenameGuardFilter
  • javax.servlet.UnavailableException:org.apache.activemq.util.FilenameGuardFilter 传输失败:java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport

标签: java activemq


【解决方案1】:

etc/hosts 文件中的错误记录会导致此问题。删除后问题就解决了。

【讨论】:

    猜你喜欢
    • 2011-10-25
    • 2017-09-08
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    相关资源
    最近更新 更多