N多个客户端 并发访问jms服务器(并发量很大几乎同一时刻)发送数据,服务器不能立刻返回信息,
但最终会返回一条处理结果消息,我想问一下这种场景是jms能担当。
假如服务器因为承受不了压力,挂掉了,数据是否会丢失?使用钝化数据是否能解决?
希望有这方面经验的朋友来帮下我!谢谢~

解决方案 »

  1.   

    几点意见供参考:
    ◎ JMS支持对消息进行持久化(如依赖数据库),那么服务器挂掉不会丢数据,但性能会损失不少;
    ◎ 不同厂商的JMS实现,其可靠性存在差异,所以需要多找找不同产品的评测报告;
    ◎ 客户端数量如果过多,只用一个JMS队列会有问题,可启用多JMS队列或集群来分流;
    ◎ 服务器返回消息的方式,是设计难点之一,如果都是受控的内部系统,可以进行反向JMS投递;
      

  2.   

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

  3.   


    基本不会丢失,这种情况下相当于消息队列是间接用数据库实现的。JMS服务器收到消息后会第一时间写入数据库,但这过程中可能丢是,即便是数据库自身也同样有发生丢失的可能性,或者硬盘坏了等等。但丢失可能性应该是非常低的。如果你要做极高可靠的系统,比如银联这样的涉及钱的,必须要有对账或结算等二次确认的保障机制!!