Tho*_*mas 1 java metrics apache-camel
在 Apache Camel 2.14 的 Metrics 组件中,我尝试使用简单表达式语言设置计数器的名称,但似乎指标组件没有使用它。
我试过了 :
from("direct:foo").routeId("routeFoo")
.to("metrics:counter:${id}")
Run Code Online (Sandbox Code Playgroud)
和
from("direct:foo").routeId("routeFoo")
.to("metrics:counter:"+ simple("${id}"))
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下,计数器的名称都设置为 ${id}。
是否可以在此组件 URI 中使用表达式语言?
谢谢
编辑 :
添加标题即可完成这项工作:
.setHeader(MetricsConstants.HEADER_METRIC_NAME, simple("${id}.${header.operationName}"))
Run Code Online (Sandbox Code Playgroud)
但直接在 URI 中使用 SEL 会更方便。
查看Simple语言的 Camel 文档。在那里,您会看到 指的${id}是消息 id,而${routeId}指的是路由 id。
编辑:我发现我误解了您最初的担忧 - 不是路线 id 的正确变量是什么,而是如何将其注入到to.
您遇到的基本问题是您正在尝试使用to. 您尝试连接字符串来组成端点,但此连接是在configure调用方法时评估的,而不是在执行路由时评估的。
嗯,Camel 确实有一些执行动态路由的机制,例如收件人列表、动态路由器或路由表。
例如,您可以使用收件人列表来获取如下路由:
from("direct:foo").routeId("routeFoo").recipientList(simple("metrics:counter:${routeId}"));
Run Code Online (Sandbox Code Playgroud)
但如果您担心设置标头太多,我不清楚这些机制是否简单得多。
| 归档时间: |
|
| 查看次数: |
6497 次 |
| 最近记录: |