有关JMS消息列队未执行的一点总结

问题:
某项目种突然出现了如下问题:A流程采用的JMS进行异步的处理提交后的(派单、修改工单状态)2项工作。但目前工单提交后同步处理数据完成之后,而通过JMS异步处理的向下级派单以及修改工单状态两项工作未完成,影响流程继续向下流转。通过查看系统日志,工单在提交后JMS发送消息成功,并未出现异常情况,后台也无错误日志。所以确定发送消息没有问题,此刻怀疑是否在接受消息或者执行的时候出现了问题。之前系统提交的工单都可以
正常执行JMS消息列队中的任务,可就在最近2天出现了这样的情况,不可能是由代码影响。
应用服务器:WEBSPHERE5.1
分析:
查看websphere的配置,结果发现应用种的消息监听中的一个监听器没有启动,而该监听器正是监听该消息列队的监听器。为什么会没有启动呢?该监听器被设置为随服务启动而自启动的。为什么会被关闭,借助google发现一些眉目,最后查看了用户组中的websphere用户被禁用了(不知道什么时候被某人给禁用)。随即将该用户启用,重新启动服务,一切ok,该监听也正常启动。以为问题会解决,然而通过走流程新建工单提交后,问题还依旧存在(崩溃啊!)监听也正常启动。可是为什么消息列队还没有执行,到现在系统种未处理的工单都已经有90多条了。也就是说有90多个消息列队未被执行。(另外一个异常情况为,该消息监听器会莫名其妙的被关闭)。无奈又去看了看websphere种的有关jms监听的设置,突然发现他的最大消息数目为40。才恍然大悟,莫非是消息列队种目前已经有90个消息,而JMS监听的设置最大消息数目为40。超出了设置的最大范围,消息列队被阻塞而导致被自动关闭。于是将最打消息数目修改为200。保存重启服务,访问系统后,之前为能被异步处理的90多条工单竟然向下派单了,问题解决了。长舒一口气!!原来问题是在这里啊!真是梦里寻他千百度,蓦然回首问题在此处:)
总结:
1、消息监听器未正常启动,原因为用户组中的websphere用户被禁用。
2、消息监听器启动好之后会莫名其妙的关闭,消息列队阻塞,阻塞的消息列队不会被正常执行。
3、当出现消息列队阻塞不能正常执行,可以尝试修改消息列队数目最大值。(原则:修改数量应该超过被阻塞的消息列队数目)

以上为个人解决实际问题中的一点总结,还有不完善的地方,忘谅解!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值