메시지 처리를 위해 Spring amqp MessageListener 구현을 사용하고 있습니다. Bean 정의와 작업 예제는 다음과 같습니다.재시도 대기열에 메시지를 보관하여 처리 할 때까지
public class AutomationMessageListenerServiceImpl implements MessageListener {
public void onMessage(Message message) {
EntityMessage message= null;
try {
message= jsonDeserializer.covertPayload(message.getBody());
dispatchToHandler(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
<rabbit:listener-container connection-factory="rabbitConnectionFactory">
<rabbit:listener queue-names="${listen.queue}" ref="messageListener"/>
</rabbit:listener-container>
<bean id="messageListener" class="com.tcl.gvg.itsm.automation.core.messaging.AutomationMessageListenerServiceImpl"/>
여기 문제는 catch 블록의 모든 오류를 처리하므로 큐가 성공적으로 메시지를 처리했다고 생각합니다. 그러나 오류가 발생하지 않으면 상위 인터페이스에서 문제가 발생하므로 예외를 throw 할 수 없습니다.
직접 코드를 많이 변경하지 않고도이 작업을 수행 할 수 있습니까?
는 메시지가 관리자가 작업을 수행 할 때까지 대기열에 보관하지만이의 onMessage() 계약 방법 나던을 가지고 위의 코드 –