我有一个问题,我是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>
答案 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
如果您有时也会提供帮助:
在队列管理器的属性中的通信中停用频道验证记录 ...