问题:
某项目种突然出现了如下问题: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、当出现消息列队阻塞不能正常执行,可以尝试修改消息列队数目最大值。(原则:修改数量应该超过被阻塞的消息列队数目)
以上为个人解决实际问题中的一点总结,还有不完善的地方,忘谅解!!
分享到:
相关推荐
**Spring与JMS消息传递** 在Java世界中,Java Message Service (JMS) 是一个标准接口,用于在分布式环境中发送和接收消息。Spring框架提供了一种简单而强大的方式来集成JMS,使得开发者可以轻松地在应用中实现异步...
**JMS消息队列机制详解** Java Message Service(JMS)是Java平台中用于企业级应用间异步通信的一种标准接口。它定义了生产、发送、接收和读取消息的标准API,使得不同的消息中间件提供商可以提供兼容的实现,便于...
WebLogic Server是一款由Oracle公司提供的企业级应用服务器,它支持Java Message Service (JMS) 规范,允许在分布式环境中可靠地发送和接收消息。JMS是Java平台上的标准接口,用于实现应用程序间的异步通信。本文将...
Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。它提供了一种可靠的消息传递机制,使得应用程序可以在分布式环境中交换信息。在这个主题中,我们将深入探讨JMS消息...
通过阅读《有关JMS的一点看法》、《Apache Geronimo的JMS实现:ActiveMQ》等文章,我们可以深入理解JMS的使用场景、优缺点以及最佳实践。同时,《JAVA基础:什么是JMS》和《JMS简介》等资料可以帮助我们系统地了解...
- **异步处理**:JMS允许应用程序发送消息后继续执行其他任务,而接收方可以在准备好处理消息时才接收,提高了系统的响应速度和效率。 - **解耦**:通过消息传递,生产者和消费者无需直接相互了解,降低了系统间的...
JMS消息处理优化方案
当我们涉及到分布式系统和消息传递时,Java消息服务(JMS)扮演着关键角色。本篇将重点讲解如何利用soapUI 3.5这个强大的接口测试工具来测试JMS消息。 首先,Java消息服务(JMS)是一种API,它提供了一种标准的方式...
本话题主要探讨如何在Spring框架下与WebLogic 9.2集成,实现JMS(Java Message Service)消息的发送。 首先,JMS是一种标准的API,用于在分布式环境中传递消息。通过JMS,应用可以在异步和解耦的方式下进行通信,...
### 消息中间件与JMS消息服务详解 #### 一、引言 随着分布式系统的规模和复杂度不断增加,传统的远程过程调用(RPC)中间件技术如CORBA、DCOM、RMI等逐渐暴露出局限性。这些技术通常采用同步通信方式,这导致客户和...
- `applicationContext-jms.xml`是Spring配置文件,通常包含JMS相关的bean定义,如`ConnectionFactory`、`Destination`(队列或主题)、`MessageListenerContainer`以及`MessageConverter`等。 - `...
例如,`MessageDriverBean`可能是一个具体的MDB实现,它遵循JMS规范,用于监听特定的消息并执行相应操作。在部署J2EE应用时,`MessageDriverBean`会被容器(如WebLogic、JBoss或Tomcat)自动配置为JMS消息的消费者。...
**恢复机制**:JMS支持消息的恢复机制,这意味着当系统发生故障时,可以通过备份和恢复机制来恢复未完成的事务和未处理的消息。 通过理解这些概念和技术,开发者可以更好地利用JMS构建出高效、可靠的企业级消息服务...
JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS
消息中间件和Java消息服务(JMS)是企业级应用集成中的关键组件,它们在分布式系统中起到数据传输和解耦的重要作用。本压缩包文件“消息中间件和JMS消息服务.rar”可能包含了关于这两个主题的详细资料,旨在帮助读者...
JMS-java message Service ,消息队列原理介绍,适合activeMQ开发使用
【JMS消息服务详解】 消息服务是一种在分布式环境中支持软件组件和应用程序之间松耦合通信的机制。这种通信模式允许组件或应用之间不需同时在线,数据可以是文本、数值,甚至在Java应用中可以包含对象。使用消息...
Java Message Service(JMS)是Java平台中用于创建、发送、接收和读取消息的应用程序接口。它提供了一种标准的方式来解耦应用程序之间的通信,使得它们可以异步地交换信息,提高了系统的可扩展性和可靠性。在JMS中,...
JMSCorrelationID用于关联相关消息,JMSReplyTo指明回复消息的地址,JMSType标识消息类型,JMSRedelivered标记消息是否被重新投递。 总的来说,JMS为开发者提供了一种标准的、跨平台的、面向消息的通信机制,能够...
接着,创建一个`javax.jms.Session`对象,它是工作单元,用于执行发送和接收消息的操作。会话可以配置为事务性的,以保证消息的一致性。 4. **创建目的地**:根据需要选择队列或主题作为消息的目的地。对于点对点...