2014-09-30 2 views
0

에서 동기식 및 비동기식 메시지 수신기 나는 브로커로 ActiveMQ가있는 Spring JMS를 사용하고 Tomcat에서 응용 프로그램을 실행 중이다. 대기열이 하나 있습니다. queue.a라고 가정 해 봅시다. 내 웹 응용 프로그램에서 내 웹 응용 프로그램을 시작할 때마다 이미 MessageListener가 실행되고 있습니다. 유일한 것은 큐 대기열을 추가하지만 동 기적으로 큐에 추가하려고합니다. 나는 이미 JmsTemplate 등을 사용해 본다. 그러나 소비자 (리스너 비동기 & 소비자 동기식)가 모두 작동하고 .receive() 메소드를 트리거하면, 항상 온라인 상태였던 메시지 리스너에게 대기열로 보낸 메시지가 전송된다. 웹 앱이 시작된 이래로 타임 아웃이 끝난 후 동기식 수신기는 메시지를 전혀 소비하지 않았습니다.1 대기열 (스프링 w/ActiveMQ) JMS API

그러나 messageListener를 주석 처리하면 동기 고객이 잘 실행됩니다.

아직 초보자입니다. 내가 원하는 것을 만들 수있는 방법이 있습니까? 감사! 다음 내 나쁜 영어 :(

+1

당신은에있는 모든 기본값을 사용하고 당신의 소비자 및 대기열 설정 (프리 페치, 배타적, 우선 순위 등)? –

+1

나는 봄에 JMS를 사용하는 데 익숙하기 때문에 그렇다고 생각한다. 설정을 수행하는 방법은 무엇인가? 콩 설정 안에 있는가? 의사 및 인터넷 – Nico

+2

당신은 매우 예외적 인 것처럼 들립니다. 진부한 소비자. 메시지를받는 소비자에게 이렇게 설정 한 것이 있습니까 : YOUR.QUEUE? consumer.exclusive = true 그리고 receive()를 사용하는 소비자가 대기열 (소비자 수 +1)에 핸들을 가지고 있는지 확인 했습니까? –

답변

0
<bean id="someQueue" class="org.apache.activemq.command.ActiveMQQueue"> 
    <constructor-arg index="0" value="TEST.QUEUE?consumer.priority=10" /> 
</bean> 

및 죄송합니다, 리스너/수신기 콩으로 설정 :이 문제 해결에 도움이 되었습니까

<bean id="someReceiver" class="blah.blah.SomeReceiver"> 
    <property name="destination" ref="someQueue" /> 
    <property name="jmsTemplate" ref="jmsTemplate" /> 
</bean>