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

JMS自动确认何时确认?

查宜修
2023-03-14

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

共有2个答案

凤修筠
2023-03-14

客户端确认
在这种确认模式下,客户端通过调用消息的确认方法来确认已使用的消息。

Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
...
msg = (TextMessage) consumer.receive();
//acknowledge
msg.acknowledge();

AUTO_ACKNOWLEDGE
使用此确认模式,当会话从要接收的调用中成功返回时,或者当会话调用消息侦听器来处理消息成功返回时,会话会自动确认客户端收到消息。

Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

源代码
最佳示例

宗意蕴
2023-03-14

请检查这一条(文章中使用的回程机器链接自2020年起离线)

AUTO_ACKNOWLEDGE模式下,在onMessage()处理程序返回后,确认总是隐式发生的最后一件事。通过在消费会话上指定client_ACKNOWLEDGE模式,接收消息的客户端可以对保证消息的传递进行更细粒度的控制。

使用CLIENT_ACKNOWLEDGE允许应用程序控制何时发送确认。例如,应用程序可以确认一条消息,从而解除JMS提供者的职责,并对该消息表示的数据执行进一步的处理。关键是Message对象上的acknowledge()方法,如清单1所示。

方法通知JMS提供者消息已被使用者成功接收。如果在确认过程中提供者失败,此方法将向客户端抛出异常。提供者失败导致消息被JMS服务器保留以便重新传递。

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

  • 我使用JMS从IBM MQ message Broker发送接收消息。我目前正在处理侦听器服务,抛出未处理的异常和消息发送回队列而没有确认。我希望服务重试一个可配置的次数,并抛出表示监听器服务不可用的完全异常消息。 我的监听器和容器工厂如下所示。

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

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

  • 问题内容: 我正在使用Flask框架创建网站,并正在为(主要是管理上的)操作实施确认页面;即删除用户。 我当前的方法(在下面详细介绍)可以工作,但是感觉很笨拙,似乎对于一个简单的任务来说需要大量工作。有更好的解决方案吗? 目前,我有一条路线可以启动该操作: 哪个重定向到确认路由: 验证确认表单后,然后再次重定向以执行实际操作: 我希望这是有道理的!只是要注意,为确认模板传递了desc和subjec

  • 我有一个springboot应用程序,它侦听Kafka流并将记录发送到某个服务以进行进一步处理。服务有时可能会失败。注释中提到了异常情况。到目前为止,我自己模拟了服务成功和异常场景。 侦听器代码: 用户工厂配置如下: 由于REST服务正在抛出RestClientException,它应该进入上面提到的if块。关于FixedBackOff,我不希望SeekToCurrentErrorHandler执