apache-camel - Camel 3 - deadLetterChannel 的动态 uri
问题描述
我正在尝试设置一个智能 JMS deadLetterChannel,其中动态计算 DLQ 的最终 uri,具体取决于原始队列名称(例如添加“.dead”后缀)。
我在文档中看到可以通过设置CamelJmsDestinationName
标题来实现。
因此,我尝试了这个:
DefaultErrorHandlerBuilder dlc = deadLetterChannel("jms:queue:dummy")
.useOriginalMessage()
.maximumRedeliveries(2);
dlc.onPrepareFailure( exchange -> {
// Override destination
exchange.getMessage().setHeader("CamelJmsDestinationName", "jms:queue:test");
});
我为CamelJmsDestinationName尝试了许多不同的值:
- “jms:队列:测试”
- “队列:测试”
- “测试”
但是它们都不起作用;标头被忽略,交换总是转到原始 uri(“queue:dummy”)。
我究竟做错了什么 ??
我正在使用绑定到Artemis ActiveMQ 代理的 Camel 3.6 和 camel-sjms2 组件:
@Resource(mappedName = "java:/ConnectionFactory")
private static ConnectionFactory connectionFactory;
@Produces
@ApplicationScoped
@Named("jms")
public final Sjms2Component createJmsComponent() {
Sjms2Component component = new Sjms2Component();
ConnectionResource pool = new ConnectionFactoryResource(poolSize, connectionFactory);
component.setConnectionResource(pool);
return component;
}
解决方案
推荐阅读
- python - 如何在python中转换字典中的多个列表
- mysql - 如何使用另一个表中的新列更新现有表?
- visual-studio-code - 更新 vscode v1.53 后 vscode Prettier 不工作
- javascript - Bootstrap Modal Reactjs 中的 Mapbox 渲染问题
- html - 调整文本以适合背景图像以打印 A4
- postman - 如何使用预请求脚本在 Postman 中发送 POST 请求(注册)
- php - 如何修复这个未定义的数组键?
- javascript - 在移动设备上禁用整页 js
- c# - 如何从 SQL 数据库表中选择随机行?
- java - Spring JPA规范转换根类型比较成功