무엇인가의 이유로, 내구성이 강한 소비자를 생성하여 activemq에서 메시지를 수집 할 수 없습니다. here 및 here을 조사했지만 최신 버전 (Java 1.7과 함께)을 사용하여 문제가 해결되지 않았습니다. 잘못된 버전/구현을 사용하고 있어야하지만이를 근절 할 수는 없습니다.org.apache.activemq.ActiveMQSession.createDurableConsumer를 호출하려고 할 때 java.lang.AbstractMethodError가 발생하는 이유
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
ConnectionFactory cf = new ActiveMQConnectionFactory("bob", "bobsPword", "tcp://localhost:61616");
Connection connection = cf.createConnection();
connection.start();
Session session = connection.createSession(false, QueueSession.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("TEST.QUEUE.FOO");
MessageConsumer consumer = session.createDurableConsumer(topic, "clientId");
Message message = consumer.receiveNoWait();
if (message instanceof TextMessage) {
System.out.println("message: " + ((TextMessage) message).getText());
}else{
System.out.println("unexpected message...");
}
오류 :
Exception in thread "main" java.lang.AbstractMethodError: org.apache.activemq.ActiveMQSession.createDurableConsumer(Ljavax/jms/Topic;Ljava/lang/String;)Ljavax/jms/MessageConsumer;
내 종속성.
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.fusesource.stompjms</groupId>
<artifactId>stompjms-client</artifactId>
<version>1.19</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.10.0</version>
</dependency>
</dependencies>
아마도 컴파일 타임이나 런타임에 다른 jar를 사용하고있을 것입니다. 오류가 발생한 코드에서 클래스 경로를 인쇄하려고하면 놀라운 결과가 발생할 수 있습니다. – StephaneM