在Mulesoft中使用SSL的WebMQ

时间:2017-12-22 03:01:00

标签: java ibm-mq mule-studio mule-esb

我是Mulesoft Anypoint Studio的新手,刚刚开始探索它。我的流程从读取来自MQ的消息开始,最后将它放在目的地,从我的本地机器开始,稍后会发展。我遇到了一个问题,其中Queue有TSL,涉及密钥库和信任库。现在,在Anypoint中,我看到了WMQ和HTTPS / TSL连接器。我已将TSL上下文设置为全局元素,但如何将其设置为WMQ连接器的一部分? Java代码可以使用正确的TLS设置(密钥库,信任库等)访问相同的队列和/或通道,但在研究中,我目前正在获得此异常:

  

根异常是:MQJE001:发生了MQException:完成代码2,原因2009   MQJE016:MQ队列管理器在连接期间立即关闭通道   Closure reason = 2009.类型:class com.ibm.mqservices.MQInternalException

在Google上搜索时,我没有遇到任何针对WMQ和TLS的示例代码。任何线索/见解都非常感谢。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

  
      
  1. 创建MQQueueConnectionFactory bean,如下所示
  2.   
<spring:bean id="MQConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
           <spring:property name="hostName" value="${hostName}"/>
           <spring:property name="port" value="${port}"/>
           <spring:property name="channel" value="${channel}"/>
           <spring:property name="queueManager" value="${queueManager}"/>
           <spring:property name="SSLCipherSuite" value="${SSLCipherSuite}"/>
           <spring:property name="targetClientMatching" value="true" />
           <spring:property name="transportType" value="1" />
        </spring:bean>
  
      
  1. 创建UserCredentialsConnectionFactoryAdapter bean并将上面创建的bean作为对此的引用传递。
  2.   
<spring:bean id="jmsQueueConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
        <spring:property name="targetConnectionFactory" ref="MQConnectionFactory" />
        <spring:property name="username" value="${username}" />
        <spring:property name="password" value="${password}" />
    </spring:bean>
  
      
  1. 创建WMQ连接器并传递适当的引用和值
  2.   
<wmq:connector name="WMQConnector" 
              hostName="${hostName}" 
              port="${port}" 
              queueManager="${queueManager}" 
              channel="${channel}" 
              transportType="CLIENT_MQ_TCPIP" 
              validateConnections="true"  
              doc:name="WMQ" 
              password="${password}" 
              username="${username}"  
              dynamicNotification="true" 
              numberOfConsumers="1" 
              connectionFactory-ref="MQConnectionFactory" 
              cacheJmsSessions="false"  
              specification="1.1" 
              targetClient="JMS_COMPLIANT" 
              acknowledgementMode="CLIENT_ACKNOWLEDGE" 
              maxRedelivery="-1">

  
      
  1. 在VM参数中设置密钥库和信任库位置和密码,如下所示
  2.   
-Djavax.net.ssl.trustStore=keystore.jks -Djavax.net.ssl.trustStorePassword=xxxx -Djavax.net.ssl.keyStore=keystore.jks -Djavax.net.ssl.keyStorePassword=xxxx

就是这样。这应该解决在Mule中使用SSL集成的WMQ。