当前位置:编程学习 > JAVA >>

关于JMS的问题,是否适合如下场景


N多个客户端 并发访问jms服务器(并发量很大几乎同一时刻)发送数据,服务器不能立刻返回信息,
但最终会返回一条处理结果消息,我想问一下这种场景是jms能担当。
假如服务器因为承受不了压力,挂掉了,数据是否会丢失?使用钝化数据是否能解决?
希望有这方面经验的朋友来帮下我!谢谢~
--------------------编程问答-------------------- 几点意见供参考:
◎ JMS支持对消息进行持久化(如依赖数据库),那么服务器挂掉不会丢数据,但性能会损失不少;
◎ 不同厂商的JMS实现,其可靠性存在差异,所以需要多找找不同产品的评测报告;
◎ 客户端数量如果过多,只用一个JMS队列会有问题,可启用多JMS队列或集群来分流;
◎ 服务器返回消息的方式,是设计难点之一,如果都是受控的内部系统,可以进行反向JMS投递;

--------------------编程问答-------------------- ◎ JMS支持对消息进行持久化(如依赖数据库),那么服务器挂掉不会丢数据,但性能会损失不少;
这个没太明白什么意思,我知道可以持久化到数据库中,但我想问下,如果因为其他原因导致服务器挂掉,或者说停电等不可预知的风险,但后来通过巧修让服务器能够在此正常启动了,还在排列当中的数据是否会丢失? --------------------编程问答--------------------
引用 2 楼 xiaomaha 的回复:
◎ JMS支持对消息进行持久化(如依赖数据库),那么服务器挂掉不会丢数据,但性能会损失不少;
这个没太明白什么意思,我知道可以持久化到数据库中,但我想问下,如果因为其他原因导致服务器挂掉,或者说停电等不可预知的风险,但后来通过巧修让服务器能够在此正常启动了,还在排列当中的数据是否会丢失?


基本不会丢失,这种情况下相当于消息队列是间接用数据库实现的。JMS服务器收到消息后会第一时间写入数据库,但这过程中可能丢是,即便是数据库自身也同样有发生丢失的可能性,或者硬盘坏了等等。但丢失可能性应该是非常低的。

如果你要做极高可靠的系统,比如银联这样的涉及钱的,必须要有对账或结算等二次确认的保障机制!!
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,