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 中存在的队列中读取消息。
问题:
每次创建新队列时是否都需要重建.binding 文件?
有没有办法在不重建 .binding 文件的情况下 use/see 新创建的队列?
对于 \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>
在我尝试了每一个组合之后。我的工作解决方案是:
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
如果您有时也会提供帮助:
在队列管理器的属性中的通信中禁用通道验证记录 ...
我有一个问题,我是 ESB 的新手,所以我使用手册来创建与我的 ESB 和 IBM MQ 的连接
https://docs.wso2.com/display/ESB460/Configure+with+IBM+WebSphere+MQ
最后我创建了 .bindings 文件并使用了。一切正常。所以我能够从 QueueManager 中存在的队列中读取消息。
问题:
每次创建新队列时是否都需要重建.binding 文件? 有没有办法在不重建 .binding 文件的情况下 use/see 新创建的队列?
对于 \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>
在我尝试了每一个组合之后。我的工作解决方案是:
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
如果您有时也会提供帮助:
在队列管理器的属性中的通信中禁用通道验证记录 ...