当前页面: 开发资料首页 → J2EE 专题 → 600分,关于Sun Message Queue的集群!
600分,关于Sun Message Queue的集群!
摘要: 600分,关于Sun Message Queue的集群!
大家好!
我在2台linux服务器上都安装了Sun Message Queue企业版,然后做了个简单的broker集群.
主要步骤如下:
1:分别修改2个MQ的配置文件,使imq.cluster.brokerlist=192.168.18.11:7676,192.168.18.12:7676
2:启动2个MQ,这时broker集群已经建立
3:编写客户端代码,进行消息发送接收测试,myQConnFactory.setProperty(ConnectionConfiguration.imqAddressList, "192.168.18.11:7676,192.168.18.12:7676")
集群测试结果如下:
1:支持负载均衡,2个MQ都有消息到达
2:当停止一个MQ,客户端能自动发送消息到另一个MQ
现在的问题是:客户端不能接受到停止的那个MQ上保存的消息,请大家都讲讲该怎么保持2个broker的消息完全同步?
我初步的想法是:
要保持消息完全同步,消息必须保存在同一个地方,例如,保存到同一个数据库;
请各位有sun MQ集群经验的高手讲讲你们一般都是怎么做的!
也可以详细的讲讲结合sun application server做集群的方式!
非常感谢!
高手都看世界杯去了?
再讨论2个问题
1:在sun application server中包括sun message queue,各位是怎么结合sun application server做sun message queue集群的?是不是仅仅利用sun application server提供jndi服务?
2:怎么让sun message queue的消息持久到数据库,例如oracle等
有这方面经验的都说说吧!
先谢谢啦!
这么多的分,眼馋
^_^
linux没用过
UPUP
今天下午下载了oracle 10g,并把集群的2个sun message queue持久到了oracle数据库,可测试了一下,发现客户端还是不能接收到停止的那个MQ的消息,请大家都讲讲该怎么保持2个broker的消息完全同步?
帖子没有什么反应,看来还是自己老老实实看sun的文档好了,想偷个懒都不行!
持久到oracle的集群测试结果如下:
1:支持负载均衡,2个MQ都有消息到达
2:当停止一个MQ,客户端能自动发送消息到另一个MQ
现在的问题是:客户端不能接收到停止的那个MQ上保存的消息,请大家都讲讲该怎么保持2个broker的消息完全同步?
接分
jms 在这方面没有做到这么好,可以考虑用storage cluster。 当然成本就更高了。
我觉得这方面没有必要做的那么强大了。即使一台jms crash以后,只要能够启动,那么启动以后消息还是可以继续被消费者消费的。
csrcom(泥鳅)兄,我觉得sun应该是支持的,这也应该是集群的特性之一啊.
如果万一某台MQ服务器物理损坏,一时半会还修不好,那这些消息岂不是就没了.
csrcom(泥鳅)兄,我以前很少用sun的产品,请多多指导我啊!
csrcom(泥鳅)兄:
我已经把集群的2个sun message queue持久到了oracle 10g数据库,经过测试,发现它们的消息都保存在同一个表里面.
另外,我的客户端目前是通过在程序中创建ConnectionFctory和Queue进行测试的,我明天在2台linux上都安装sun application server企业版,然后客户端通过jndi获取ConnectionFctory和Queue进行测试,看看有什么不同!
csrcom(泥鳅)兄, 多多指导啊!
灌水...
搞定了!
采用数据库持久化消息固然是好事情,但是要想到你必须依赖这个数据库服务。如果外围的系统因为某种原因宕机。或者网络问题,会不会影响sun message queue的服务,这些问题你都应该进行测试。
csrcom(泥鳅)说的是,其实在我们的方案中,数据库也是集群的,系统能根据用户规模的不断增长进行水平扩展。
另外,我也进行了性能测试,并以“循证”方式进行性能分析,因为性能非常重要,所以我们奉行“实际数据决定一切”的原则,而非受控于臆测与偏见。
由于我以前大多用的是weblogic、websphere或jboss、tomcat,对sun的产品的经验不多,还请csrcom(泥鳅)兄多多指导!
不知道顶一下哈
jms是异步通信 不是同步的 性能有问题??? 不理解
而且消息存入数据库 数据库也是集成的
怎么不直接用数据库
性能上面要看什么程度才对于一个应用是可接受得。一台jms server不一定就满足你全部的需求,有可能2台甚至更多服务器来分担压力。
jms 并非一定是异步得,也有同步得。看你是如何使用了。
数据库跟JMS是完全干不同的活,完全2个不同的东西。
而且在jms server中数据库的意图只是用于消息的持久化,消息如何持久化、何时持久化都是Jms server以及我们的配置决定的(可能消息一到马上持久化,也有是一定时间才持久化一次,这些完全是配置决定的)。
不要忘记JMS 跟 数据库的 角色。 2个在一起配合干活,不是代表数据库就能搞定全部的活。
确实能同步 MDB是异步
不要忘记JMS 跟 数据库的 角色。 2个在一起配合干活,不是代表数据库就能搞定全部的活。
jms是一个标准 实现方式多种多样
不按照sun的接口也可以实现相似功能
具体性能是数据存储方面 还是消息接受发送方面
看实际了 凭空讨论也没什么意义
先顶一下,马上回复!
基于MQ技术,不仅可以非常简单的进行集群,解决系统的负载均衡、高可用性、FailOver等问题,同时也可以利用MQ实现工作流,简化系统之间的通讯等。
如果那位高手有Sun Message Queue集群的经验,请继续分享!
sun的文档没有说清楚,我是经过测试才搞定的,好了,揭贴。