scala - 如何为 akka-camel 端点启用 JMX 监控

标签 scala apache-camel akka

我有一个 Akka 应用程序(akka 2.2.0、akka-camel、camel 2.10.5)。 该应用程序包括生产者组件,即:

class MyProducer extends Actor with Producer with akka.actor.ActorLogging {
...

我想让 Camel 通过 JMX 自动公开这些生产者的监控属性,以查看已交换了多少消息、平均时间、吞吐量等。

理论上Apache Camel has extensive support for JMX to allow you to monitor and control the Camel managed objects with a JMX client .实际上,我启用了 JMX 代理

    <jmxAgent
            id="agent"
            disabled="false"
            createConnector="true"
            usePlatformMBeanServer="true"
            mbeanServerDefaultDomain="localhost"
            registryPort="1346"
            registerAlways="true"
            registerNewRoutes="true"
            />

这导致一系列 Camel 信息显示为 mbean(例如,从 VisualVM 中可以看到)但是“端点”下没有关于我的 Producer 参与者的信息。

我试过用 actor 装饰

@ManagedResource

这似乎没有任何效果。 文档说

"In Camel 2.1 onwards only singleton endpoints are registered as the overhead for non singleton will be substantial in cases where thousands or millions of endpoints are used. This can happens when using a Recipient List EIP or from a ProducerTemplate that sends a lot of messages. "

我想知道我的 Producer actor 是否因此不公开信息(我不清楚 Producer 特征产生的端点类型到底是什么)。

我到底需要做什么才能为我的 akka-camel 端点启用 JMX 监控(因为使用生产者特征)?

编辑: Viktor 指出我需要重新定义一个配置属性。 这是必要的,但还不够。还需要强制 Camel 管理您的端点。我必须添加这个:

camelContext.addRegisterEndpointCallback(new EndpointStrategy {
  def registerEndpoint(name: String, ep: Endpoint) = {
    camelContext.getManagementStrategy.manageObject(ep)
    ep
  }
})

最佳答案

Akka 文档非常广泛。

akka {
  camel {
  # Whether JMX should be enabled or disabled for the Camel Context
  jmx = off
  …
  }
}

关于scala - 如何为 akka-camel 端点启用 JMX 监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17657755/

相关文章:

eclipse - 如何在本地构建和运行 Scala Spark

scala - 如何将已知的结构化 RDD 转换为 Vector

java - 对于 Camel 路由输入端点的 JBoss 嵌入式 MQ 进行 jndi 查找时出现问题

scala - Akka 2.0 不再支持压缩吗?

multithreading - 如何保持在内存的范围内

scala - 使用 spark cassandra 连接器更新 Cassandra 表

java - Akka 远程处理 : Dead Letters after enabling Serialization

akka - 如何用虚拟时间测试 Akka Actor?

java - Apache Camel : ValidatingProcessor : XSD validation

java - Camel REST Bean 链接