首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle高级队列-去队列后删除消息

Oracle高级队列-去队列后删除消息
EN

Stack Overflow用户
提问于 2015-10-21 10:40:56
回答 1查看 2K关注 0票数 1

我们使用Oracle JMS从高级队列中读取消息。我们使用以下代码从队列中读取消息:

代码语言:javascript
复制
    MessageConsumer consumer = sess.createConsumer(q);


    for (Message m; (m = consumer.receive()) != null;) 
    {
          new Timer().schedule(new QueueExample(m), 0);
    }

问题是,在从队列接收消息之后,没有从队列表中完全删除消息,只有状态字段从0更改为2。这是Oracle JMS客户端的默认行为吗?我们希望在使用consumer.receive()方法从队列中读取消息之后,从队列表中完全删除记录。做这件事的适当api方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-21 11:02:47

我认为,由于队列中的retention_time 参数被配置为高值的,所以您正在经历这种情况。

保留用于:

用户可以指定在使用后保留消息。系统管理员可以指定保留消息的持续时间。Oracle AQ存储有关每条消息的历史记录的信息,为发送给本地或远程收件人的邮件保留队列和延迟、过期和保留的消息属性。该信息包含ENQUEUE/DEQUEUE时间以及执行每个请求的事务的标识。这允许用户保存相关消息的历史记录。历史可用于跟踪、数据仓库和数据挖掘操作。

您可以通过检查队列创建脚本来验证这一点,并通过管理界面或使用ALTER_QUEUE更改设置。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33257174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档