2016-04-01 24 views
2

Websphere MQ Managerキューからメッセージを消費するSpring統合フローがあります。これらのメッセージは単純なプロセスを経て、別のキュー(同じMQ Manager内)に入れられます。私たちは、最終的な宛先キューにメッセージを書き込もうとするとIBM文字セット・ヘッダ例外を発生させる

、我々は次のエラーを取得している:

Caused by: javax.jms.JMSException: MQJMS1006: invalid value for 'JMS_IBM_Character_Set': 'IBM850'. 
     at com.ibm.msg.client.wmq.v6.jms.internal.ConfigEnvironment.newException(ConfigEnvironment.java:431) ~[com.ibm.mqjms-7.0.1.3.jar:7.0.1.3 - k701-103-100812] 
     at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageProducer.sendInternal(MQMessageProducer.java:1153) ~[com.ibm.mqjms-7.0.1.3.jar:7.0.1.3 - k701-103-100812] 
     at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageProducer.send(MQMessageProducer.java:779) ~[com.ibm.mqjms-7.0.1.3.jar:7.0.1.3 - k701-103-100812] 
     at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageProducer.send(MQMessageProducer.java:2718) ~[com.ibm.mqjms-7.0.1.3.jar:7.0.1.3 - k701-103-100812] 
     at com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.sendMessage(JmsMessageProducerImpl.java:907) ~[com.ibm.mqjms-7.0.1.3.jar:7.0.1.3 - k701-103-100812] 
     at com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.send_(JmsMessageProducerImpl.java:762) ~[com.ibm.mqjms-7.0.1.3.jar:7.0.1.3 - k701-103-100812] 
     at com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.send(JmsMessageProducerImpl.java:393) ~[com.ibm.mqjms-7.0.1.3.jar:7.0.1.3 - k701-103-100812] 
     at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:333) ~[com.ibm.mqjms-7.0.1.3.jar:7.0.1.3 - k701-103-100812] 
     at org.springframework.jms.connection.CachedMessageProducer.send(CachedMessageProducer.java:181) ~[spring-jms-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
     at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:636) ~[spring-jms-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
     at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:607) ~[spring-jms-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
     at org.springframework.jms.core.JmsTemplate$4.doInJms(JmsTemplate.java:584) ~[spring-jms-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
     at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:494) ~[spring-jms-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
     at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:580) ~[spring-jms-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
     at org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:706) ~[spring-jms-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
     at org.springframework.integration.jms.JmsSendingMessageHandler.send(JmsSendingMessageHandler.java:145) ~[spring-integration-jms-4.2.0.RELEASE.jar:?] 
     at org.springframework.integration.jms.JmsSendingMessageHandler.handleMessageInternal(JmsSendingMessageHandler.java:115) ~[spring-integration-jms-4.2.0.RELEASE.jar:?] 
     at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127) ~[spring-integration-core-4.2.0.RELEASE.jar:?] 

我々は最初のキューからピックアップしたメッセージには、次のIBM固有のヘッダを持っています

JMS_IBM_Character_Set=IBM850, 
JMS_IBM_MQMD_CodedCharSetId=850, 
JMS_IBM_Encoding=17, 
JMS_IBM_PutApplType=11, 
JMS_IBM_Format=  , 
JMSXDeliveryCount=1, 
JMS_IBM_PutTime=12534150, 
JMS_IBM_MsgType=8 

最終的なWebsphere MQキューに処理したメッセージを書き込んでみると、それらはまだそこにあります。

プロジェクトは、以下のIBM MQ依存jarファイルを使用している:

compile 'com.ibm:com.ibm.mq:7.0.1.3' 
compile 'com.ibm:com.ibm.mqjms:7.0.1.3' 
compile 'com.ibm:com.ibm.mq.jmqi:7.0.1.3' 
compile 'com.ibm:com.ibm.mq.headers:7.0.1.3' 

この例外を解決する正しい方法は何ですか?私たち必要があります。

  1. は、最終的なWebSphere MQのキューに を書き込む前にメッセージから任意のJMS_IBM_XXXヘッダーを削除しますか?
  2. 異なるバージョンのjarファイルを使用しますか?
  3. 完全に何か他のことをしますか?

我々は、WebSphere MQキューからメッセージをピックアップし、最終的には別のWebSphere MQキューに書き込み、他のフローでは、この問題が発生していないようです。 WebSphere MQ 7.5 - MS_IBM_Character_Set引用

答えて

4

:あなたはバージョン7.0.1.3を使用しているので

Prior to WebSphere® MQ V7.5, applications using WebSphere MQ messaging provider migration mode could set the JMS_IBM_Character_Set property of a message to a numerical Coded Character Set Identifier.

When the message was sent, the Coded Character Set Identifier stored in the JMS_IBM_Character_Set property was mapped to the MQMD field CodedCharacterSetID.

When using the WebSphere MQ V7.5 classes for JMS, a JMSException containing the message:

MQJMS1006: invalid value for 'JMS_IBM_Character_Set': '<number>' 

is thrown if an application tries to send a message that has the JMS_IBM_Character_Set property set to a numerical Coded Character Set Identifier.

The JMS_IBM_Character_Set property must be set to the Java character set string that maps to the Coded Character Set Identifier that the application wants to use. For more information, see Mapping JMS fields onto WebSphere MQ fields (outgoing messages)

はなく、7.5以降、値が、それは850(数値)でなければならないという意味、"数値Coded Character Set Identifier"でなければなりませんIBM850

バージョン7.5では、IBM850である必要があります。

+1

IBM MQ依存関係のjarファイルを7.5に更新すると、この問題は解決されました。 –

関連する問題