【发布时间】:2021-02-05 10:50:00
【问题描述】:
我有一个如下配置文件,
@Slf4j
@Configuration
@EnableJms
public class MyQpidConfig {
@Bean("myQpidConn")
public AMQConnectionFactory amqConnectionFactory() throws URLSyntaxException {
AMQConnectionFactory amqConnectionFactory = new AMQConnectionFactory("URL");
return amqConnectionFactory;
}
@Bean("myJmsContainer")
public DefaultMessageListenerContainer defaultMessageListenerContainer(@Qualifier("myQpidAdaptor") MessageListenerAdapter messageListenerAdapter ,@Qualifier("myQpidConn")AMQConnectionFactory connectionFactory) {
DefaultMessageListenerContainer messageListenerContainer = new DefaultMessageListenerContainer();
messageListenerContainer.setConnectionFactory(connectionFactory);
messageListenerContainer.setDestinationName(destinationName);
messageListenerContainer.setMessageListener(messageListenerAdapter);
messageListenerContainer.setPubSubDomain(false);
messageListenerContainer.setSessionTransacted(true);
messageListenerContainer.setDurableSubscriptionName("MYSUBSCRIBER");
messageListenerContainer.setSubscriptionDurable(true);
messageListenerContainer.setAutoStartup(true);
messageListenerContainer.setDestination((Queue) () -> "MYQUEUE");
return messageListenerContainer;
}
@Bean("myQpidAdaptor")
public MessageListenerAdapter messageListenerAdapter() {
Preconditions.checkNotNull(qpidMessageListner, "Consumer listener not set");
MessageListenerAdapter messageListenerAdapter = new MessageListenerAdapter(new MyQpidMessageListner());
messageListenerAdapter.setDefaultListenerMethod("onMessage");
messageListenerAdapter.setDefaultResponseQueueName("MYQUEUE");
return messageListenerAdapter;
}
}
destinationName 等于
ADDR:MYSUBSCRIBER:MYQUEUE; {"create":"receiver",
"node":{"durable":true,"x-declare":
{"exclusive":true,"auto-delete":false,
"x-bindings":[{"exchange":"amq.topic","key":"MYQUEUE"}]}}}
我的 Listener 类如下,
@Slf4j
@Component
public class MyQpidMessageListner implements MessageListener{
@Override
public void onMessage(Message jmsBytesMessage) {
log.info("Control Inside");
//to do
}
}
作为异步消费者,当我当时运行我的应用程序时遇到与目的地相关的异常,
DefaultMessageListenerContainer -
Setup of JMS message listener invoker failed for destination 'com.my.MyQpidConfig$$Lambda$637/429515253@3aa1975' - trying to recover. Cause: com.my.MyQpidConfig$$Lambda$637/429515253 cannot be cast to org.apache.qpid.client.AMQDestination
如果它与 AMQDestination 相关,那么我如何在 java 代码中创建 AMQDestination。 我没有为这个 QPID 问题获得任何资源。 任何建议的帮助都必须感谢。
【问题讨论】:
标签: java spring-boot jms qpid