当前位置: 首页 > 知识库问答 >
问题:

MDB何时确认消息读取的JMS队列

澹台欣怿
2023-03-14

我在Weblogic 12c上部署了一个MDB,它从JMS队列(UDQ)读取消息。MDB正在读取消息,但它没有从JMS队列中删除,这导致消息被重复读取。所以,我想知道MDB何时确认JMS队列它成功读取了消息,并且队列应该删除该消息。

共有1个答案

习华灿
2023-03-14

MDB确认模式取决于非事务/事务会话类型。非交易会话有五种确认模式:

  • 自动确认

描述:https://docs.oracle.com/cd/E13222_01/wls/docs103/jms/fund.html,表2-7用于非事务会话的确认模式

创建事务会话时,确认模式将被忽略。当应用程序提交事务时,消息传递系统将确认应用程序在事务期间收到的所有消息。

因此,请检查您的会话类型,然后,如果您使用非事务性会话,请检查确认模式。你可以使用“自动确认”-

您可以通过

@MessageDriven(name=“queueMdb”,activationConfig={@ActivationConfigProperty(propertyName=“acknowledgeMode”,propertyValue=“Auto acknowledge”),}

 类似资料:
  • 我有一个java客户机,它在队列中发送jms消息(“队列请求”)。该消息包含一个int属性(“id”),其中包含唯一的客户端id号。消息正在处理中,然后进入另一个队列(“队列响应”)。如何让客户机等到具有其id的消息在队列中,然后读取它。我曾尝试使用侦听器并实现onMessage,但当收到消息时,我如何停止侦听?

  • 我正在与JTA、两阶段提交、JMS和JDBC事务作斗争。这个想法(简而言之)是 在队列中接收消息 所以我得到了,创建,从会话创建接收器并设置消息侦听器。 在侦听器内部,在方法中,我开始我的用户事务,执行jdbc内容并提交事务或在出现问题时进行回滚。现在我期望(又名“希望”)当用户事务提交时,消息会得到确认。 但这并没有发生,消息仍然在队列中,并且一次又一次地被重新传递。 我错过了什么?我仔细检查了

  • 我曾尝试用谷歌搜索这个,但没有成功。如果我使用的是,并且我有一个用Java编写的客户机,那么消息何时被确认?我正在使用一个,它包含一个方法。确认信息是在完成之前还是在完成之后或在其他时间点发送回服务器?提前感谢任何人提供的任何帮助!

  • 我有以下设置: 外部应用程序写入到jms队列 jms队列也是外部的,所以这里不可能进行配置 运行在Glassfish上的现有应用程序,使用ActiveMQ将服务器连接到jms队列 现有的应用程序是一个MessageDriven bean,实现了MessageListener接口(当消息放在队列中时,当前正在处理消息) 新的要求是消息只能在02:00到04:00的时间段内处理 如何最好地限制Mess

  • 我正在使用AWS sdk开发基于SQS的队列pub-sub。 在非常基本的原型中,我将消息并发地推送到我已经创建的队列中。但是,如何才能确定我的消息正在被推送到队列中呢?

  • 问题内容: 我试图用谷歌搜索,但是没有成功。如果我正在使用,并且我有一个用Java编写的使用者客户端,则何时确认消息?我正在使用一个包含方法的。确认是在完成之前或之后还是在其他时间发送回服务器?在此先感谢任何人都可以提供的任何帮助! 问题答案: 请检查这一个。 在模式下,确认始终是处理程序返回后隐式发生的最后一件事。通过在使用会话上指定模式,接收消息的客户端可以对保证消息的传递进行更细粒度的控制。