Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 ActiveMQ 5.x和DurableConsumer_Java_Activemq - Fatal编程技术网

Java ActiveMQ 5.x和DurableConsumer

Java ActiveMQ 5.x和DurableConsumer,java,activemq,Java,Activemq,我正在尝试使用ActiveMQ 5.x创建一个持久使用者,因此我有以下内容: private static void consumeFromTopic() throws JMSException, NamingException { javax.naming.Context ctx = new InitialContext(); ConnectionFactory factory = (ConnectionFactory) ctx.lookup("ConnectionFacto

我正在尝试使用ActiveMQ 5.x创建一个持久使用者,因此我有以下内容:

private static void consumeFromTopic() throws JMSException, NamingException {
    javax.naming.Context ctx = new InitialContext();

    ConnectionFactory factory = (ConnectionFactory) ctx.lookup("ConnectionFactory");
    Connection connection = factory.createConnection();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Topic topic = session.createTopic("topic-queue");
    MessageConsumer consumer = session.createDurableConsumer(topic, "lanhellas-durable-consumer");
    consumer.setMessageListener(new MyListener());

    connection.start();
}
Exception in thread "main" java.lang.AbstractMethodError: org.apache.activemq.ActiveMQSession.createDurableConsumer(Ljavax/jms/Topic;Ljava/lang/String;)Ljavax/jms/MessageConsumer;
当我尝试启动我的消费者时,我得到以下信息:

private static void consumeFromTopic() throws JMSException, NamingException {
    javax.naming.Context ctx = new InitialContext();

    ConnectionFactory factory = (ConnectionFactory) ctx.lookup("ConnectionFactory");
    Connection connection = factory.createConnection();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Topic topic = session.createTopic("topic-queue");
    MessageConsumer consumer = session.createDurableConsumer(topic, "lanhellas-durable-consumer");
    consumer.setMessageListener(new MyListener());

    connection.start();
}
Exception in thread "main" java.lang.AbstractMethodError: org.apache.activemq.ActiveMQSession.createDurableConsumer(Ljavax/jms/Topic;Ljava/lang/String;)Ljavax/jms/MessageConsumer;
这是我的pom.xml

<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>javax.jms-api</artifactId>
    <version>2.0.1</version>
</dependency>

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-core</artifactId>
    <version>5.7.0</version>
</dependency>

javax.jms
javax.jms-api
2.0.1
org.apache.activemq
activemq内核
5.7.0
因此,在阅读有关ActiveMQ 5.x的更多信息时,我发现仅支持JMS 1.x,而此版本不支持此方法,因此我需要更改为支持JMS 2.0的Apache Artemis,但对此我有一些疑问:

  • 使用ACtiveMQ 5.x库的正确
    javax.jmsAPI
    版本是什么
  • 如果JMS 1.x中不支持持久使用者,为什么ActiveMQ 5.x代理(控制台管理)支持持久使用者
  • 使用ApacheArtemis的正确版本和依赖项是什么

  • JMS 1.1确实支持持久订阅,您只需查看以了解如何创建持久主题订阅服务器

    在此之前,我已经回答了什么是正确的JMS依赖项,请参见