0
저는 AMQ를 처음 접했고, 메시지를 작성하여 대기열로 보내고 비동기식으로 사용한다는 개념을 이해합니다. 예외시 AMQ MessageListenerAdapter를 중지하십시오.
내 주요 봄 구성
은 myClass가 # MyMethod라는내 문제 그들을 잡 그때 jmsTemplate.convertAndSend (와 대기열에 물건을 보내 아무런 문제가 없다
@Bean
public DefaultMessageListenerContainer listenerContainer(
MessageListenerAdapter adapter) {
DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer();
dmlc.setConnectionFactory(connectionFactory());
dmlc.setMessageListener(adapter);
dmlc.setDestinationName("myQueue");
dmlc.setConcurrentConsumers(5);
return dmlc;
}
@Bean
MessageListenerAdapter adapter(MyClass myClass) {
MessageListenerAdapter messageListener = new MessageListenerAdapter(
myClass);
messageListener.setDefaultListenerMethod("myMethod");
return messageListener;
}
@Bean
public JmsTemplate jmsTemplate() {
JmsTemplate jt = new JmsTemplate(connectionFactory());
return jt;
}
다음)하고 있습니다 : 예외가 발생하면 메시지를 소비하지 못하게하려면 리스너가 필요합니다. 보통 예외는 원격 사이트가 오프라인이고 나중에 시도한다고 알려줍니다. 만약 내가 그것을 멈추지 않는다면 모든 메시지는 대부분 잃어버린다. 내가 다시 보낼 수있을 때까지 대기열을 가득 채우고 싶습니다.
가능합니까?
나는 방금 전에 내가 자동 응답하고 있다고 알았다. 시도한 메시지 .CLIENT_ACKNOWLEDGE는 대기열에있는 실패한 메시지를 유지 하겠지만 대신 전달 될 때까지 동일한 메시지에 집착합니다. – javaNoober
재 배달 정책을 설정해야합니다. http://activemq.apache.org/redelivery-policy.html CLIENT_ACK은 모든 상황에 좋지 않습니다. 처리되지 않는 예외가 있기 때문에. 이 설명서에는 기본적으로 각 모드가 제공하는 기능에 대한 설명이 있습니다. http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jms/listener/AbstractMessageListenerContainer.html –