2016-06-23 1 views
3

간단한 JMS JmsTemplate을 사용하여 MQ에 메시지를 보냅니다.Spring을 사용하여 MQ 헤더를 변경하는 방법 JmsTemplate

<beans:bean id="myJMSTemplate" class="org.springframework.jms.core.JmsTemplate"> 
    <beans:property name="connectionFactory"> 
     <beans:ref bean="cachedConnectionFactory" /> 
    </beans:property> 
    <beans:property name="pubSubDomain"> 
     <beans:value>false</beans:value> 
    </beans:property> 
    <beans:property name="receiveTimeout"> 
     <beans:value>1000</beans:value> 
    </beans:property> 
</beans:bean> 

    <int-jms:outbound-channel-adapter id="sendMessageToAvengers" channel="antEventChannel" jms-template="myJMSTemplate" destination-name='com.marvel.avengers.antMan'/> 

이것은, 그러나, 내 클라이언트 응용 프로그램은 메시지 형식은 기본적으로 'MQHRF2'에서와 같이 메시지를 처리 ​​할 수 ​​잘되지 않습니다 작동합니다. MQSTR 형식을 명시 적으로 보내기 위해 MQ 헤더를 어떻게 변경합니까?

미리 감사드립니다.

답변

1

IBM MQ JMS 인터페이스에는 TARGCLIENT이라는 등록 정보가 있으며, MQ 값으로 설정하면 MQRFH2 헤더가 추가되지 않습니다. 나는 스프링 인터페이스가 그것을 사용할 수 있는지 여부를 모른다.

또는 큐 관리자의 큐 정의를 처리하여 처리 할 수없는 어플리케이션의 헤더를 제거 할 수 있습니다. 이는 MQRFH2 헤더를 제거하는 것이므로 넣는 시간이 아니라 얻는 시간에 제거하므로 MQRFH2 헤더를 처리 할 수있는 의 응용 프로그램이이면 여전히 존재하지만 여전히 사용할 수없는 응용 프로그램의 경우 그것을 처리하면 제거됩니다.

는 큐 관리자에서 다음 MQSC 명령을 실행하여,이 방식으로 작동 큐를 만들려면 :

ALTER QLOCAL(q-name) PROPCTL(NONE) 

추가 읽기

+0

, 그러나 Spring jmsTemplate을 사용하여이 작업을 수행 할 수있는 방법이 있는지 알고 싶습니다. :) 나는 이것을 사용했고 MQSTR 형식으로 메시지를 넣을 수있었습니다. ibm.mq.jms API 사용. ((com.ibm.mq.jms.MQQueue) 큐) .setTargetClient (JMSC.MQJMS_CLIENT_NONJMS_MQ); –

0

msg를 MQSTR로 보내기 위해서는 targetcllient = 1 특성을 설정해야합니다. 는 자바 코드의 일부를 보내는 이렇게 당신이 JmsTemplate의 콩이 설정을 시도 할 수 있습니다 또는

String senderQ = "queue:///MYQUEUENAME?targetClient=1"; 
jmsTemplate.send(senderQ, new MessageCreator() { 
    public Message createMessage(Session session) throws JMSException { 
     TextMessage message = session.createTextMessage(text); 
     message.setJMSReplyTo(replyToQ); 
     return message; 
    } 
}); 

아래로 대기열 이름을 변경하려면

나는 봄 인터페이스를 사용하지 않고이를 달성 할 수 있었다
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
    <!-- set format to MQSTR with "targetClient=1" parameter --> 
    <property name="defaultDestinationName" value="queue:///default?targetClient=1" /> 
    <property name="connectionFactory" ref="mqConnectionFactory" /> 
</bean>