SimpleMessageListenerContainer를 사용하고 있으며 매 시간마다 큐가 멈추고 unack'd 메시지로 인해 처리되지 않는 문제가있었습니다.unack 된 메시지로 인해 AMQP가 멈추었습니다.
정상적으로 잡히지 않았지만 문제를 추적 할 수없는 오류 때문일 것으로 확신합니다.
승인 모드를 NONE으로 설정했는데 문제가 "수정"되었지만 실제로는 문제가 숨겨졌습니다. 또한 AmqpException을 throw하고 메시지 큐를 다시 대기하려는 경우 확인 모드를 NONE으로 설정하면 작동하지 않습니다.
제 질문은 큐가 멈추는 문제를 어떻게 추적 할 수 있습니까? unack'd 메시지의 페이로드를 볼 수있는 방법이 있습니까? 아니면 승인이 필요하지 않게 할 수있는 승인 모드가 있습니까? 예외가 발생하면 대기열에서 메시지를 대기 시킵니까? 여기
내가 리스너를 등록하고 방법입니다
final SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(queueName);
container.setMessageListener(new MQMessageListenerWrapper(listener));
container.setAcknowledgeMode(AcknowledgeMode.NONE);
container.start();
감사합니다.
:-) 내 나쁜 코딩과는 아무런 관련이 없다? –
문제를 재현하기 위해 설정을 공유하면 좋을 것입니다. –
문제는 동일한 메시지를 밀어 넣을 때도 로컬 환경에서 다시 만들 수 없다는 것입니다. 코드 예제로 질문을 업데이트했습니다. – slarge