Topic: 不用MDB如何获取集群上分布式消息队列 |
Print this page |
1.不用MDB如何获取集群上分布式消息队列 | Copy to clipboard |
Posted by: sljsuper Posted on: 2007-05-23 10:43 不用MDB,使用注册侦听的方法如何获取分布式消息队列的消息? 常规的注册方法只能固定获取一个物理队列的消息,如何把所有的物理队列上的消息处一次接收呢,望指教。使用过多线程的方法,感觉不太稳定。 |
2.Re:不用MDB如何获取集群上分布式消息队列 [Re: sljsuper] | Copy to clipboard |
Posted by: snowbug Posted on: 2007-05-24 05:42 可否说得详细些,为什么不用 MDB,具体的要求是什么,什么环境,等等。 |
3.Re:不用MDB如何获取集群上分布式消息队列 [Re: sljsuper] | Copy to clipboard |
Posted by: sljsuper Posted on: 2007-05-24 09:52 侦听队列的环境是weblogic9.2下,集群、分布式队列。分布式队列上建了8个存储位置。目的是想通过DQ来获取所有物理队列的消息,使用注册侦听的方法每次通过DQ注册,只连到一个物理队列,其他的队列消息取不到,使用多线程也不能保证每个物理队列都能连到。用MDB可以,但是基于我们项目的原因不适合,而且MDB要配置jar.xml文件打包,这样就导致如果我有10几个环境要使用这个项目因为这个XML文件就需要打10几个版本,这样是否太浪费了。 |
4.Re:不用MDB如何获取集群上分布式消息队列 [Re: sljsuper] | Copy to clipboard |
Posted by: snowbug Posted on: 2007-05-25 07:18 不是很确定为什么你需要获取所有物理队列的消息。使用 DQ 的目的应该是平衡负载吧,那么每个 Queue Receiver 的代码都应该是一样的,换句话说,不管那个物理队列受到了消息,处理的代码都应该是相同的。 |
5.Re:不用MDB如何获取集群上分布式消息队列 [Re: sljsuper] | Copy to clipboard |
Posted by: sljsuper Posted on: 2007-05-25 10:08 在表面上我们是看不见物理队列的JNID的,只能看见DQ。而通过DQ来查找到话只能绑定一个物理地址。这就是问题所在。在bea的文档看见queue = myQueueSession.createQueue("myModule!myServer/myQueue"); 这个方法,试了没用,因为我的server是集群,物理队列也根本不知道。就是不明白发送的时候怎么可以通过一个DQ,而接收的时候却不行。 |
6.Re:不用MDB如何获取集群上分布式消息队列 [Re: sljsuper] | Copy to clipboard |
Posted by: snowbug Posted on: 2007-05-26 15:30 我知道你的意思了。你用的是 UDQ 吧。 这个应该是 bea 特有的问题。我不知道怎么解决。老实说,我很奇怪 bea 的文档居然没有提到这个问题。如果不能注册所有的物理队列,就会丢失消息,那么这个 DQ 还有什么用呢。 我好像看到你是可以直接在 jndi 里拿到单个的物理队列的。 |
7.Re:不用MDB如何获取集群上分布式消息队列 [Re: sljsuper] | Copy to clipboard |
Posted by: sljsuper Posted on: 2007-05-27 09:11 问题已解决 JMSModuleHelper.uddMemberJNDIName(jmsservername,dqname); 以此方法获取物理队列JNDI。以前用过,觉得这个方法很奇怪,不用上下文环境的就可以直接用,只是作为 一个字符串翻译的工作。 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |