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

时间:2017-02-14 20:31:21

标签: wso2 ibm-mq

我有一个问题,我是ESB的新手,因此我使用手册创建了与ESB和IBM MQ的连接

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

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

问题:

  • 每次创建新队列时,我是否需要重建.binding文件? 有没有办法在不重建.binding文件的情况下使用/查看新创建的队列?

  • 对于\ repository \ conf \ axis2.xml中的连接,我使用了

> <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>

1 个答案:

答案 0 :(得分:1)

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

建议不要

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读取的消息队列

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

注意:沟通可能很棘手。请确保检查您的userName是否可以访问队列,在IBM Technote&#34; 2035 MQRC_NOT_AUTHORIZED Connecting to WebSphere MQ from WebSphere Application Server via CLIENT Bindings&#34;

中阅读更多内容

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

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

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

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

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

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