WSO2 IMB MQ 与新创建队列的连接

WSO2 IMB MQ connection with new created Queues

我有一个问题,我是 ESB 的新手,所以我使用手册来创建与我的 ESB 和 IBM MQ 的连接

https://docs.wso2.com/display/ESB460/Configure+with+IBM+WebSphere+MQ

最后我创建了 .bindings 文件并使用了。一切正常。所以我能够从 QueueManager 中存在的队列中读取消息。

问题:

> <parameter name="transport.jms.ConnectionFactoryType" > locked="false">queue</parameter>
> <parameter name="transport.jms.UserName" locked="false">**myname**</parameter>
> <parameter name="transport.jms.Password" locked="false">**mypassword**</parameter>

我在 http://nandikajayawardana.blogspot.com/search/label/WSo2%20ESB

上看到了这个

但也许我应该使用这个

> <parameter name="transport.jms.ConnectionFactoryType"
> locked="false">**topic**</parameter>
>             <parameter name="transport.jms.Destination">ivtT</parameter>

在我尝试了每一个组合之后。我的工作解决方案是:

WMQInitialContextFactory 不推荐...从版本 8 IBM MQ 开始,他们仅使用 RefFSContextFactory

所以在创建 .binding 文件之后 repository\conf\axis2.xml 应该看起来像

      <parameter name="esbMngr" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">file:/home/wso2admin/wso2esb-5.0.0/jndi</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">GSTQueueConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
            <parameter name="transport.jms.UserName" locked="false">userName</parameter>
            <parameter name="transport.jms.Password" locked="false">userPassword</parameter>
      </parameter>

.......

其中 GSTQueueConnectionFactory 是在 .binding 文件中定义的 ConectionFactory 名称

所以代理服务器看起来像:

    <?xml version="1.0" encoding="UTF-8"?> <proxy xmlns="http://ws.apache.org/ns/synapse"
           name="TMSLeaseMQParser"
           startOnLoad="true"
           statistics="disable"
           trace="disable"
           transports="jms">    
<target>
          <inSequence>        
             <log level="full">           
             </log>
          </inSequence>
          <outSequence>
             <send/>
          </outSequence>
          <faultSequence/>         
</target>    
<parameter name="transport.jms.DestinationType">queue</parameter>    
<parameter name="transport.jms.Destination">TMSALease</parameter>
    <parameter name="transport.jms.ContentType">
          <rules xmlns="">
             <jmsProperty>contectType</jmsProperty>
             <default>application/xml</default>
          </rules>    
</parameter>    
<parameter name="transport.jms.ConnectionFactory">esbMngr</parameter>    <description/> 
</proxy>

所以 esbMngr 是 axis2.xml 中定义的部分名称,而 TMSALease 是您从 IBM 读取的消息队列MQ

我希望这会节省一些时间......欢迎任何反馈

注意:沟通可能很棘手。请务必检查您的用户名是否有权访问队列,在 IBM Technote“2035 MQRC_NOT_AUTHORIZED Connecting to WebSphere MQ from WebSphere Application Server via CLIENT Bindings

中阅读更多内容

要检查 MQ OAM 权限,请使用 dspmqaut 命令,例如:

dspmqaut -m WS02ESBManager -n TMSALease -t queue -p userName

要设置 MQ OAM 权限,请使用 setmqaut 命令,例如:

setmqaut -m WS02ESBManager -n TMSALease -t queue -p userName+put

如果您有时也会提供帮助:

在队列管理器的属性中的通信中禁用通道验证记录 ...