ActiveMQ 5.x и DurableConsumer - PullRequest
1 голос
/ 19 мая 2019

Я пытаюсь создать долговременного потребителя, используя 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;

Это мой 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>

Итак, читая больше об ActiveMQ 5.xi, вы обнаружили, что поддерживает только JMS 1.x, и этот метод не поддерживается вэта версия, поэтому мне нужно будет перейти на Apache Artemis, поддерживающий JMS 2.0, но у меня есть некоторые сомнения по этому поводу:

  1. Какая версия javax.jms-api является правильной для работы с библиотекой ACtiveMQ 5.x?
  2. Почему у брокера ActiveMQ 5.x (управление консолью) есть поддержка долговременного потребителя, если это не поддерживается в JMS 1.x?
  3. Какие правильные версии и зависимости для работы с ApacheАртемида?

1 Ответ

2 голосов
/ 19 мая 2019

JMS 1.1 поддерживает долговременные подписки, вам просто нужно взглянуть на API документы , чтобы узнать, как, вот один метод , который бы создал надежного подписчика на тему.

Я уже отвечал на вопрос, что такое правильная зависимость JMS от SO, см. здесь .

...