2017-12-13 16 views
1

weblogic jms와 스프링 통합을 사용하고 있습니다. 내 논리는 json 객체를 jms 대기열에 넣고 대기열에서 채널로 가져와 유효성을 검사하고 특정 필드를 기반으로 경로를 지정하는 것입니다. 오류가 있으면 수정하여 대기열에 다시 넣습니다. 두 가지 문제가 있습니다. 1. 메시지가 객체로 소비되면 객체를 weblogic의 관리 콘솔에서 대기중인 것으로 볼 수 있습니다. 2. 유효성 검사를 수정 한 후 수정 된 객체를 대기열에 넣으면 대기열에서 원래 객체를 가져옵니다.jms, weblogic과의 스프링 통합, 메시지가 채널로 소비 된 후에도 대기열에 나타납니다.

<int-jms:outbound-channel-adapter id="jmsOutbound" 
    channel="requestChannel" connection-factory="queueConnectionFactory" 
    destination="inputQueue" /> 
<int-jms:message-driven-channel-adapter 
    id="jmsInbound" connection-factory="queueConnectionFactory" 
    destination="inputQueue" channel="routingChannel" /> 

if (message.getHeaders().get("documentType").equals("sec")) 
     routingChannels.add(outboundSecChannel); 
    else if (message.getHeaders().get("documentType").equals("unds")) 
     routingChannels.add(outboundFChannel); 
    else if (message.getHeaders().get("documentType").equals("CH")) 
     routingChannels.add(outboundAChannel); 
    else{ 
     routingChannels.add(errorChannel); 
    } 

당신의 도움에 대한

감사 라우팅을 사용하여 채널에 넣어.

답변

1

나는 소비 부분을 별도의 스레드로 구분해야한다고 생각합니다. 나는 거래로 전환해야한다고 말하지 않지만 적어도 소비 된 메시지에 대한 간단한 승인을해야한다.

메시지를 다시 큐에 넣으려고한다는 것을 알았으므로 오류 사실과 독립적으로 소비 된 메시지를 항상 확인한다는 것은 분명합니다. 그래서, 이나 ExecutorChannel<int-jms:message-driven-channel-adapter> 다음에 그리고 <int-jms:outbound-channel-adapter> 앞에두고 자신의 스레드에서 WebLogic JMS로 열심히 일하게하는 것이 좋습니다.

+0

감사합니다. @Artem, 내 도움이되었습니다. 수정 된 메시지를 새 메시지로 저장합니다. – sreenivas