인바운드 메시지 수신기 어댑터가 있고 아웃 바운드 어댑터가 대상 큐를 열지 못하면 소스 큐에서 메시지가 손실됩니다. jms 대기열 메시지 전송에 spring-io를 사용하고 있습니다.아웃 바운드 어댑터가 대상 큐를 열지 못하면 메시지가 소스에서 손실됩니다.
메시지가 대상 큐에 도달하거나 전송 큐에 남아있는 후 전송을 커밋하는 방법?
인바운드 메시지 수신기 어댑터가 있고 아웃 바운드 어댑터가 대상 큐를 열지 못하면 소스 큐에서 메시지가 손실됩니다. jms 대기열 메시지 전송에 spring-io를 사용하고 있습니다.아웃 바운드 어댑터가 대상 큐를 열지 못하면 메시지가 소스에서 손실됩니다.
메시지가 대상 큐에 도달하거나 전송 큐에 남아있는 후 전송을 커밋하는 방법?
message-driven-channel-adapter
에 acknowledge="transacted"
을 설정하십시오.
이것은 소비자에서 생산자로의 트랜잭션 전파 문제 일뿐입니다. 아래의 추가 구성을 수행하면 쉽게 수정할 수 있습니다.
DefaultMessageListenerContainer
을 사용하는 경우 sessionTransacted를 true로 설정하거나 외부 transactionManager를 지정하는 것이 좋습니다.
메시지 수신기 컨테이너를 구성하지 않았지만 대신 message-driven-channel-adapter
을 사용하는 경우 acknowledge
속성을 transacted
으로 설정해야합니다.
true
에 다음과 같이
JmsTemplate
를 구성하고
sessionTransacted
속성을 설정해야합니다
<bean id="outboundJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="outboundCF" />
<property name="defaultDestination" ref="outboundDestination" />
<property name="sessionTransacted" value="true" />
</bean>
<int-jms:outbound-channel-adapter channel="jmsOutChannel" jms-template="outboundJmsTemplate" />
은 당신의 문제를 해결하기를 바랍니다.