向rabbitmq服务器发送确认取决于转换器和监听器

2024-01-03

首先,我介绍一下我的案例背景:
我在用spring-boot and spring-rabbitmq。它对我有用,你应该知道我必须为收到的消息实现自定义转换器。
(1)从这个转换器可以抛出异常,例如在不正确的消息等情况下。
(2)成功转换后(无例外)侦听器被调用。然后,在监听器中也可以抛出异常。


现在,我想强迫两件事:
(1')如果转换器出现异常,请勿重新排队消息。简单地说,向队列发送确认并模拟一切正常。
(2')在这种情况下,默认设置是什么?当内部spring-rabbitmq engine决定向队列发送确认?当它决定命令重新排队时?是否可以根据情况进行管理?

我在文档中找到:

如果未启用重试并且侦听器抛出异常,则通过 默认情况下,将无限期地重试交付。你可以修改这个 行为有两种方式;将 defaultRequeueRejected 属性设置为 false 并且将尝试零重新交付;或者,抛出一个 AmqpRejectAndDontRequeueException 来发出消息信号应该是 拒绝。这是启用重试时使用的机制 已达到最大投递尝试次数。

例如,在取决于侦听器中捕获的异常中,我应该决定是否要重新排队消息,正如我所想的那样(只需从catch AmqpRejectAndDontRequeueException)。我不确定这是否是好方法,这就是为什么我要询问您的意见。


请阅读参考手册 http://docs.spring.io/spring-amqp//reference/html/.

该行为(主要)由ErrorHandler.

Throw a MessageConversionException- 容器对大多数异常重新排队消息,但某些异常被认为是致命的。一般来说,如果消息无法转换,那么重新传递它就没有意义。

这一切都在名为(令人惊讶?)的部分中清楚地解释了异常处理 http://docs.spring.io/spring-amqp//reference/html/_reference.html#exception-handling

从版本 1.3.2 开始,默认的 ErrorHandler 现在是 ConditionalRejectingErrorHandler ,它将拒绝(而不是重新排队)因不可恢复错误而失败的消息:

osamqp...MessageConversionException

os.messaging...MessageConversionException

os.messaging...MethodArgumentNotValidException

os.messaging...MethodArgumentTypeMismatchException

java.lang.NoSuchMethodException

java.lang.ClassCastException

当使用 MessageConverter 转换传入消息有效负载时,可能会引发第一个错误。如果映射到 @RabbitListener 方法时需要额外转换,则转换服务可能会抛出第二个错误。如果在侦听器中使用验证(例如@Valid)并且验证失败,则可能会抛出第三个错误。如果入站消息转换为对于目标方法不正确的类型,则可能会抛出第四个错误。例如,参数声明为Message,但接收到的是Message。

第五和第六是1.6.3版本中添加的。

您可以自定义ErrorHandler如所须。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向rabbitmq服务器发送确认取决于转换器和监听器 的相关文章

  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • openFileOutput 在单例类中无法正常工作 - 想法/解决方法?

    作为一名 Android 开发新手 我遇到了一些奇怪的问题 我想创建一个类 它方法其他类 活动 任何可以用于以某种特殊方式处理文件的类 假设为了简单起见 我们将记录一些内容 如果我在活动中执行以下操作 例如在 OnClick 侦听器中 则一
  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • 二元运算符 >=、-、* 的错误操作数类型

    我无法弄清楚如何修复代码中不断出现的这些错误 import java util Scanner public class Unit02Prog1 public static void main String args Scanner inp
  • JAX-WS 入门 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有人可以推荐一些关于 JAX WS 入门的好教程吗 使用各种工具 如 wsgen 等 您可以从这里开始 通过 Java SE 6 平台介绍
  • Jenkins 未显示 Maven 编译器错误

    在 Jenkins 中构建多模块 maven 3 项目时 如果出现构建错误 我们会收到一条神秘消息 表明 Maven 编译器插件失败 这在上周才刚刚开始发生 INFO BUILD FAILURE INFO INFO Total time 1
  • 如何杀死 Java Future?

    我正在开发的服务使用 Future 来并行运行多个任务 每个任务最多可能需要一分钟才能完成 然而 外部库似乎有问题 因为在某些情况下 2 的时间 它不会返回 在这些情况下 我想给出 2 分钟的等待时间 如果还没有返回 我想杀死 future
  • 清空变量不会使方法引用无效[重复]

    这个问题在这里已经有答案了 为什么代码不抛出NullPointerException当我使用与变量绑定的方法引用时dog我后来分配了null to 我正在使用 Java 8 import java util function Functio
  • 在 doxygen 中使用 @see 或 @link

    我之前用 Javadoc 记录并使用了标签 see link or see foo and link foo 在我的描述中链接到其他课程 现在我尝试了doxygen 似乎这些标签不兼容 如果我运行 doxygen 完整的标签将被简单地解释为
  • React Native v0.71.8 React-native-vector-icons 你看不到的图标

    我在用react native版本v0 71 8 我安装了react native vector icons库 但图标未显示 似乎链接在最新版本的 React Native 中不再起作用 所以我按照说明进行操作 但它不再编译 出现以下错误
  • javadoc 子集/java 库组织

    我自己从来没有运行过javadoc 无论是在命令行还是ant 的 javadoc 任务 http ant apache org manual Tasks javadoc html 我将使用 ant 我需要为我编写的库生成 javadoc 问
  • Spring Security 角色层次结构不适用于 Thymeleaf sec:authorize

    我正在使用 Spring Security 3 2 5 RELEASE 和 ThymeLeaf 2 1 4 RELEASE 我已经在安全上下文中定义了角色层次结构 在我的视图层中我正在使用sec authorize属性来定义菜单项 我希望看
  • 如何在 JASPIC 中保存经过身份验证的用户?

    我开发了一个安全认证模块 SAM 并实现了validateRequest方法 我还有一个简单的 Web 应用程序配置为使用此 SAM In my validateRequest方法 我检查 clientSubject 并设置一个Caller
  • 向Java类库添加函数

    我使用的 Java 类库在很多方面都不完整 有很多类我认为应该内置其他成员函数 但是 我不确定添加这些成员函数的最佳实践 让我们调用不足的基类A class A public A long arbitrary arguments publi
  • log4j.properties 在 Wildfly 上无法正常工作

    我的类路径中有一个 log4j properties 文件 它位于 APP XX jar log4j properties 位置 我注意到在ear文件中我还可以在lib文件夹中找到log4j 1 2 17 jar 但无论我在 log4j p
  • 在 Spring MVC 中将请求写入文件

    我希望能够将整个请求写入 Spring MVC 控制器中的文件 我已尝试以下操作 但即使我使用大量参数发出 POST 请求 文件也始终为空 RequestMapping method RequestMethod POST value pay
  • 如何更改 JAX-WS Web 服务的地址位置

    我们目前已经公开了具有以下 URL 的 JAX RPC Web 服务 http xx xx xx xx myservice MYGatewaySoapHttpPort wsdl http xx xx xx xx myservice MYGa
  • 用于生成 ISO 文件的 Maven 插件

    有没有可以生成ISO镜像的maven插件 我需要获取一些模块的输出 主要是包含 jar 的 zip 文件 并将它们组合成一个 ISO 映像 Thanks 现在有一个 ISO9660 maven 插件可以完成这项工作 https github
  • JPA ManyToMany 产生的空联接表

    我有一个应用程序 其中我尝试使用 Hibernate 作为 JPA 提供程序来实现两个实体之间的多对多关系 我正在尝试的例子是一个单向的 其中一个相机可以有多个镜头 而镜头可以安装到多个相机中 以下是我的实体类 只需粘贴其中的相关部分 Ca
  • Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

    我正在用java制作一个游戏 它每秒刷新60次 每次执行循环时 我都会使用 g2d 来绘制图像和字符串 如果我这样做的话一切都会很好g2d setFont new Font Arial Font PLAIN 8 和抽绳 这将是正常的 但如果

随机推荐