我目前正在开发一个使用Spring的JMS Messaging(JMSTemplate)的应用程序。应用程序需要向大型机队列发送消息,该队列无法解密JMSTemplate附加到消息的“RFH”标头。有没有办法以progamatically方式完全删除所有标题信息,以便大型机可以在没有标题的情况下获取邮件的原始内容?
这是我的代码......
MQQueueConnectionFactory connectionFactory = new MQQueueConnectionFactory();
connectionFactory.setHostName( "127.0.0.1" );
connectionFactory.setPort( 1414 );
connectionFactory.setChannel( "S_LOCALHOST" );
connectionFactory.setQueueManager( "QM_LOCALHOST" );
connectionFactory.setTransportType( 1 );
UserCredentialsConnectionFactoryAdapter credentials = new UserCredentialsConnectionFactoryAdapter();
credentials.setUsername( "" );
credentials.setPassword( "" );
credentials.setTargetConnectionFactory( connectionFactory );
JmsTemplate jmsTemplate = new JmsTemplate( credentials );
jmsTemplate.setPubSubDomain( false );
jmsTemplate.setDeliveryMode( javax.jms.DeliveryMode.NON_PERSISTENT );
jmsTemplate.setExplicitQosEnabled( true );
jmsTemplate.setReceiveTimeout( 60000 );
jmsTemplate.convertAndSend( "MY.QUEUE", "cobol data" );
以下是Websphere MQ Explorer中的消息。如何删除这些值? Spring JMS甚至可以实现吗? Lemme知道你是否还需要更多信息......
答案 0 :(得分:4)
禁止将RFH标头发送到非JMS队列的一种方法是使用targetClient
队列URI属性,例如
jmsTemplate.convertAndSend( "queue:///MY.QUEUE?targetClient=1", "cobol data" );
或者,您可以在Queue
对象本身上设置此项,然后将其用作jmsTemplate
的目标:
queue.setTargetClient(WMQConstants.WMQ_CLIENT_NONJMS_MQ);
WebSphere MQ参考:
https://www.ibm.com/support/knowledgecenter/SSFKSJ_9.0.0/com.ibm.mq.dev.doc/q032240_.htm