中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > J2EE
如何清除队列中的“死”消息?
作者:未知 时间:2005-08-10 19:22 出处:Java频道 责编:chinaitpower
              摘要:如何清除队列中的“死”消息?

什么是死消息?
当一个消息被返回或回收后,JMS 立即准备再次发送该消息,但是错误情况仍可能没有被消除,并且应用程序可能仍然不能处理该消息。这样的消息就被称为死消息(dead message),仍然驻留在消息队列中。

解决方案A

如果指定的存活时间值 (JMSExpiration ) 小于或等于指定的发送时间值,则消息发送成功。否则,消息会悄然无声地终止。

消息终止
当一个消息被发送到队列中时,客户可以指定一个“存活时间”值。JMS 提供者将不发送已超出存活时间的消息。当超出其存活时间时,存储在队列中的消息将会被删除。
注意:根据 JMS规范,javax.jms.Message 中的 setJMSExpiration() 方法不会被用到应用程序,它被 JMS 自己留作内部使用。然而,应用程序可能通过应用程序服务器设置消息的终止时间。


示例:JMSMessage PutMsg = new JMSMessage(); PutMsg.setJMSDeliveryMode(MQC.MQPER_NOT_PERSISTENT); PutMsg.setJMSExpiration(18000);

解决方案B

我们可以用一个叫 QueueClearProcessor.java 的独立程序,由它使用 QueueBrowser API 来浏览队列中的旧消息,并每隔一段时间将其从队列中清除。可以通过消息创建时间来识别出旧消息。为了访问创建时间戳,JMS 在消息对象中提供了一个 API 方法: (getJMSTimestamp())

解决方案 C

MQSeries Message Browser 提供一个便利的图形化界面来查看和操作 MQ 队列中的消息。通过这个工具 MQSeries 管理员可以在任何消息队列管理器上显示消息内容,并可以对每个消息进行操作。

可能的用途

消息浏览器可以用于:

1、显示任何 MQ 消息的完整内容(包括使用十六进制显示特征的非文本消息);

2、显示消息描述符中的字段和一个消息中内嵌的任何 MQ 标题;也可以显示匹配数字值的命名为 MQ 的常量;

3、在消息中或在一个队列的所有消息中搜索特定的消息内容;

4、
从队列中移出单个的消息,或将它们转移到另一个队列中;

5、
MQ 消息保存到文件;

6、创建新的 MQ 消息,并将他们放到当前或者远程队列中。

关于作者

Raghuram Bharadwaj Chennai Hexaware 技术有限公司架构小组的系统分析员。他在 BEA Systems HK LtdIndia Liaison Office工作,负责整个亚太地区多方面的咨询和教学任务。Raghu 在技术层次为客户项目提供咨询,包括 JavaJ2EE 和性能管理,同时他也精通 BEA WebLogic 的群集、安全和应用程序性能调优。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有