公司做了套由JMS做消息队列,从JMS取出对象后转交给RTX服务器发送RTX消息的机制。 前几天出现重大BUG:消息不发送。 经过两天的测试发现了症结所在: 我们通过RTX服务器发送RTX消息的机制是通过向一个URL后面加参数来实现的,而这个请求URL,在RTX服务器上默认超时时间设置为0,即永不超时,同时此服务器设置的同一个连接两次发送消息的最短间隔时间为15毫秒。 因为我们网管的失误,打开了8012端口,此端口为RTX服务器接收消息的端口,致使开发环境中的消息能够发送到工作环境的服务器,使得RTX服务器接收的并发量出现瞬时过大现象,RTX服务器判断为DDOS攻击,因此拒绝服务,此服务器拒绝服务的方式为不返回任何值。 同时,因为设置的超时时间为0,因此后继的消息因为前面的并未抛出超时异常也未发送完成,所以积压在JMS队列中,造成了消息发送失败的现象。 一开始我一直在找JMS的原因,因为曾经在某处看到过JMS服务器并不稳定的文章,但是我在测试过程中发现,JMS还是很强大的,在消息积压的时候,其队列中最高曾积压了4000多条消息,仍然能够继续工作,我使用的是ActiveMQ+Tomcat6.10。 希望能给碰到类似JMS消息积压现象的朋友一点启示,从JMS消息不能正常取出入手,或许会有收获!
posts - 3, comments - 32, trackbacks - 0, articles - 3
Copyright © Exiler