代码之家  ›  专栏  ›  技术社区  ›  user123

Mulesoft中带SSL的WebMQ

  •  1
  • user123  · 技术社区  · 7 年前

    我是Mulesoft Anypoint工作室的新手,刚刚开始探索它。我的流程从读取MQ中的消息开始,最后将其放在目标位置,从我的本地机器开始,然后再发展。我遇到了一个问题,队列中有涉及密钥库和信任库的TSL。现在,在任何地方我都可以看到WMQ和HTTPS/TSL连接器。我已经将TSL上下文设置为全局元素,但如何将其设置为WMQ连接器的一部分?同一队列(&A)/或通道可以通过具有正确TLS设置(密钥库、信任库等)的Java代码访问,但在研究中,我目前遇到了以下异常:

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

    在google上搜索时,我没有遇到任何带有TLS的WMQ示例代码。非常感谢您提供任何线索/见解。

    提前感谢您!

    1 回复  |  直到 7 年前
        1
  •  1
  •   user123    7 年前
    1. 创建MQQueueConnectionFactory bean,如下所示
    <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作为对此的引用传递。
    <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连接器并传递适当的引用和值
    <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参数中设置密钥库和信任库位置以及密码,如下所示
    -Djavax.net.ssl.trustStore=keystore.jks -Djavax.net.ssl.trustStorePassword=xxxx -Djavax.net.ssl.keyStore=keystore.jks -Djavax.net.ssl.keyStorePassword=xxxx
    

    就是这样。这将解决WMQ与Mule中的SSL集成问题。