apache-camel - 这条骆驼路线会在异常情况下确认消息吗?
问题描述
我有一个将 JSON 转换为对象并将其传递给处理器类的 Camel 路由。代码如下。此 ActiveMQ 使用者未确认某些消息,导致主题得到备份。代码没有明确设置确认模式,但断点显示这些值 -
确认模式 = -1 确认模式名称 = 空
应该进行哪些更改以确保在成功处理和处理器类内部发生异常时发送确认?
@Component
public class MyRoute extends RouteBuilder {
private String mySubscription;
private MyProcessor myProcessor;
public MyRoute(@Value("${my.topic}") String tripSubscription, MyProcessor myProcessor) {
this.mySubscription = mySubscription;
this.myProcessor = myProcessor;
}
@Override
public void configure() {
from(mySubscription)
.unmarshal().json(JsonLibrary.Jackson, MyDTO.class)
.bean(myProcessor, "process(${body})")
.end();
}
}
处理器类 -
@Slf4j
@Component
@AllArgsConstructor
public class MyProcessor {
public void process(MyDTO dto) {
//code that throws exception
}
}
解决方案
Github上的 Camel JMS 组件文档说默认确认模式是AUTO_ ACKNOWLEDGE
.
但是,camel.apache.org 上的旧文档说默认-1
值与您看到的值相对应。要么在最近的版本中更改了默认值,要么在 Github 上的新文档是错误的。
该值-1
在某种程度上是无效的,因为它不是定义的模式。
因此,您可以尝试在您的 consumer 上显式设置acknowledgementModeName=AUTO_ACKNOWLEDGE
。
推荐阅读
- typescript - TS 4.0 可变元组和中间件模式
- javascript - 提前返回到之前的水平
- reactjs - 使用 React 和 Ant Design Pro / UmiJS 实施 AWS Amplify Authenticator
- powershell - 使用 Powershell 查找子网站所属的网站集
- python - 如何在 python 中将 CSV 表转换为 COCO 格式?
- python-sphinx - Python 代码中注释和文档字符串的基本语法
- groovy - 更新的 groovy 和 spock 导致 propertymissing 和 methodmissing 调用问题
- audio - 改变音频音高的最佳方法是什么?
- python - Selenium 刮取 Power BI
- jquery - 多选择框 Jquery 1.7 在 IE 中不起作用