java - 在 2.23.0 版本中,如果没有 CamelContext,则无法创建 Camel DefaultMessage
问题描述
我的实际代码(Camel 2.10.x)创建一个新的 Camel 消息来包装一些数据(http 查询),如下所示:
Message message = new DefaultMessage();
message.setHeader(HEADER_QUERY, query);
message.setHeader(HEADER_BRAND, brand);
message.setHeader(HEADER_LIST_ID, listId);
当我迁移我的平台时,我们使用的 Camel 版本是:2.23.0,我们现在可以看到空的构造函数已被弃用。执行代码时,我们遇到了与官方 Camel 论坛的这篇文章中提到的相同的问题。
好方法似乎是通过使用带有 CamelContext in 参数的构造函数来创建消息,如下所示:
Message message = new DefaultMessage(camelContext);
message.setHeader(HEADER_QUERY, query);
message.setHeader(HEADER_BRAND, brand);
message.setHeader(HEADER_LIST_ID, listId);
我在 OSGI 上下文中,但代码在我没有Exchange
原始Message
可用的 Bean 中。我只是想知道如何CamelContext
向 Message 构造函数提供,或者是否有另一种方法可以在DefaultMessage
没有 CamelContext 的情况下创建。
请注意,我不在 Camel Route 中,Bean 是从 REST 接口调用的(我怀疑有一些重构来清理它,但我们计划很快停用它)。我正在寻找一个速赢的解决方案。
解决方案
你可以试试org.apache.camel.main.Main
上课。它是一个单例,所以你可以通过使用来获取实例Main.getInstance()
,然后你可以调用getOrCreateCamelContext()
方法来获取CamelContext。
推荐阅读
- reference - 引用 SML 中的引用
- java - Spring onclick按钮事件应该转到java函数
- button - 如何使用 Jsoup 处理 onclick = getRedirectPage(34342,55,46)?
- c++ - 捕获不正确的链接错误 QNetworkAccessManager
- amazon-web-services - 为什么 CloudFront 仅在授予列表权限时才返回自定义错误对象?
- python - Mongoengine如何在新年后重置SequenceField?
- amazon-web-services - 了解 API Gateway 的健康检查和多区域实现
- javascript - 从 DOM 解析 HTML
- node.js - 运行进程的端口详细信息
- c# - 如何将参数传递给 IActionFilter 属性?