Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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
Java 如何在没有spring的情况下创建ActiveMQ使用者?_Java_Jms_Activemq - Fatal编程技术网

Java 如何在没有spring的情况下创建ActiveMQ使用者?

Java 如何在没有spring的情况下创建ActiveMQ使用者?,java,jms,activemq,Java,Jms,Activemq,我创建了一个必须使用activemq主题的应用程序,但在这个项目中,我们不需要使用SpringXML。我只创建了一个名为ActiveMQConsumer的类,它实现了MessageListener并重写了onMessage方法,但什么也没发生。。。这个方法行吗?还是少了什么?我目前正在通过tcp连接 public class ActiveMQConsumer implements MessageListener { public ActiveMQConsumer() throws JMSExc

我创建了一个必须使用activemq主题的应用程序,但在这个项目中,我们不需要使用SpringXML。我只创建了一个名为ActiveMQConsumer的类,它实现了MessageListener并重写了onMessage方法,但什么也没发生。。。这个方法行吗?还是少了什么?我目前正在通过tcp连接

public class ActiveMQConsumer implements MessageListener {

public ActiveMQConsumer() throws JMSException {
    try {
        ConnectionFactory factory = new ActiveMQConnectionFactory(CATALOG_BROKER_URL.getValue());
        Connection connection = factory.createConnection();
        connection.start();
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Destination destination = session.createTopic(CATALOG_TOPIC_NAME.getValue());
        MessageConsumer consumer = session.createConsumer(destination);
        consumer.setMessageListener(this);
    } catch (JMSException e) {
        System.out.println("Error");
    }
}

@Override
public void onMessage(final Message message) {
    LOGGER.info("Start consuming message from Catalog");
    try {
        if (message instanceof TextMessage) {
            TextMessage txtMessage = (TextMessage) message;
            System.out.println("Message: " + txtMessage.getText());
        } else {
            System.out.println("Invalid Message !");
        }
    } catch (JMSException e) {
        System.out.println("Exception" + e);
    }
}

}

我已经解决了使用ContextListener调用可运行类的问题。只要把它放到web.xml中就可以了。

这个类是如何使用的?您是否正在某处执行
新建ActiveMQConsumer()
?它是用
@Component
注释的,所以spring会这样做吗?仅仅编写一个类并不意味着它可以在运行时使用。可能相关:@zapl我不想使用spring,我看到了一些不需要它的例子。。。我怎么做?啊,好的。不需要弹簧。您的代码是否正常运行?您是否已验证它是否建立了连接?是否有发布消息的内容?在运行程序后,如果在activeMQ UI中,您可以看到“no of consumer”对应于该主题为1,那么您可以确保您的consumer运行正常,并且存在一些不同的问题,但是如果consumer没有在那里注册,您需要了解消费者的执行情况