关于weblogic中jms message的状态

今天同事问我说,如何处理RECEIVE、VISIBLE的JMS消息?有点懵,之前从没有关注过消息的状态。Weblogic81中,我们是不能看到 destination中的消息的,只能看到当前destination中,有多少message, 有多少pending的message。而92中,我们监控destination的时候,可以看到具体的message,而且message后面会跟一个state string。标题中说的RECEIVE、VISIBLE就是这个state string,其实state有很多,常见的也就是RECEIVE、VISIBLE。下面我们看看所有这些STATE在代码(MessageInfo.java)中的解释,

VISIBLE:Indicates that the message is visible on the destination.消息已经入列,等待被消费。

ORDERED:Indicates that the message belongs to a Unit of Order. 消息处于某个unit中。

DELAYED:Indicates that the message exists on the destination but is classified as pending because it has a scheduled delivery time or is delayed. 消息已经入列,但因为TimeToDeliver还没有到,直到TimeToDeliver,该消息才会变成VISIBLE。或者由于客户端消费异常,比如onMessage中出现了RuntimeException,消息被recover后,等待Redelivery Delay时间到达,然后重新发送。

RECEIVE:Indicates that the message exists on the destination but is classified as pending because it has been received but not acknowledged. The actual state may also include STATE_TRANSACTION if the receive operation was performed as part of a transaction.消息已经入列,且已经被DELIVER到某个CONSUMER,但CONSUMER的ACKNOWLEDGE还没有收到。可能是网络问题或客户端设为CLIENT_ACK模式。

SEND:Indicates that the message exists on the destination but is classified as pending because it is part of a send operation that is in progress. The actual state may also include STATE_TRANSACTION if the send operation was perfromed as part of a transaction.消息已经入列,但目前send操作正在处理中(比如事务未提交),该消息对于consumer是不可用的。

TRANSACTION:Indicates that the message exists on the destination but is classified as pending because it is part of a send or receive operation that is being performed as part of a global transaction.

PAUSED:Indicates that the message exists on the destination but is being held in a pending state because of a pause operation. 消息因为PAUSE被PENDING在DEST中。

REDELIVERY_COUNT_EXCEEDED:Indicates that the message has exceeded the redelivery count set for the destination and is no longer available for consumption. 消息反复REDELIVERY的上限已经到达,这样的消息不会被重发。

根据消息的状态,我们基本可以断定JMS消息相关问题的位置,从而调查可以做到有的放矢。

时间: 2024-08-03 01:14:38

关于weblogic中jms message的状态的相关文章

WebLogic中的一些基本概念

WebLogic 中的基本概念 上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来,下面是一些基本概念. Domain : 域是作为单元进行管理的一组相关的 WebLogic Server 资源.一个域包含一个或多个 WebLogic Server 实例,这些实例可以是群集实例.非群集实例,或者是群集与非群集实例的组合.一个域可以包含多个群集.域还包含部署在域中的应用程序组件.此域中的这些应用程序组件和服务器实例所需的资源和服

weblogic集群启动服务器状态为ADMIN,正常应该为RUNNING

问题描述 weblogic集群启动服务器状态为ADMIN,正常应该为RUNNING weblogic集群启动服务器状态为ADMIN,正常应该为RUNNING.日志如下: 解决方案 参考下这篇文章http://blog.csdn.net/lyayfy/article/details/7516792 如果我的回答帮助了您,或者您希望得到小喵进一步的回答,请先采纳这个回答.如果您觉得小喵的回答在所有回答中不是最好的,也请您在采纳别的大牛哥哥的答案的同时,点一个赞给我吧,您对小喵的鼓励是我前进的动力.方

在ASP.NET应用程序中捕捉身份验证状态的变化

asp.net|程序 前年我写过一篇随笔抱怨Microsoft在ASP.NET架构中Session_End事件上处理,说来惭愧,其实当年我对ASP.NET运行时的复杂性理解不足.实话说,捕捉通过身份验证和注销身份验证对我来说,意义重大.例如: 在登录前先检查是否已经存在SSO提供器: 登录完成后加载相关的权限,这些加载过程可能与具体应用项目完全无关: 登录结束后通知SSO提供器清除Cookie内容: ...... 目前的ASP.NET提供的解决方案是在Global.cs中加上FormsAuthe

Weblogic中获取Server信息

在J2EE中我们经常需要获取到当前server的host和port等信息,比如在结构复杂的EJB程序中,进行一些remote调用,或者访问本机中的一个webservice组件,在weblogic中,如果设置了ListenAddress,那么localhost这个主机名是不可访问的,我们可以通过MBean去获取到server的信息,以获取server的ip和port为例: ObjectName rs = null; MBeanServer mbeanServer= (MBeanServer)con

JVM TI学习(1) 如何中断weblogic中stuck thread

JPDA(Java Platform Debugger Architecture)是sun推出的一套工具接口,有了这些接口,debugger.profile工具可以attach到target JVM,进而可以监控.调试我们的程序.JPDA包括三部分:JVM TI, JDI, JDWP.TI可以使用native语言,通过调用jvmti.c提供的系列库函数,实现debug工作,而JDI是TI面向Java开发人员提供的高层开发接口.TI代替了早期的DI,每个版本都做了一定的功能增强.随着JDK的发展,

关于在weblogic中异步调用webservice

这几天碰到个问题:在weblogic中调用async webservice,如果客户端不等待结果(比如服务器端因为某些原因,web service需要执行很长时间),直接退出的话,weblogic server是否保存调用结果,结果保存多长时间?如果这样的异常客户端很多,对服务器有什么负面影响,比如连接资源.内存开销等. 首先我们先阐述一下异步的概念 在weblogic webservice中,有两处异步的概念: 1:Synchronous request-response (the defau

Weblogic中因为IP变更导致SubCoordinator not available,Transaction Rollba

Weblogic中因为IP变更导致SubCoordinator not available,Transaction RollbackException问题调查 这几天在做一些Transaction方面的研究,碰到一个诡异的问题.问题大概是这样的,之前我的测试一直在公司做,今天把工作带到家里了,结果因为如下问题,导致我没法工作了. weblogic.transaction.RollbackException: SubCoordinator 'server_2+10.182.216.189:7021

JBoss中使用EJB有状态bean钝化时间设置

JBoss中使用EJB有状态bean钝化时间设置: 修改 standardjboss.xml 文件 <container-configuration> <container-name>Standard Stateful SessionBean</container-name> <call-logging>false</call-logging> <invoker-proxy-binding-name>stateful-rmi-invo

关于weblogic中使用prepared statement cache后操作DDL的问题

前几天有客户问我这么个问题,他们在weblogic中配置了prepared statement cache, 而他们应用中有操作DDL的地方,比如alter table什么的,这时候如果使用cached prepared statement的话,Oracle端会抛出SQLException: 违反协议.其实这个问题,weblogic 文档中已经有描述,如下: http://e-docs.bea.com/wls/docs81/ConsoleHelp/jdbc_connection_pools.ht