如何使用Jolokia启动通常在计时器上触发的路段

时间:2015-03-06 16:16:06

标签: java apache-camel jolokia

我可以调用以下URL来查找Camel路由部分的状态...

http://localhost:8080/gateway047/jolokia/exec/org.apache.camel:context=VCM047,type=routes,name=%22VCM047_store_list_schedule%22/getState()

这将给出

{
timestamp: 1425658189,
status: 200,
request: {
operation: "getState()",
mbean: "org.apache.camel:context=VCM047,name="VCM047_store_list_schedule",type=routes",
type: "exec"
},
value: "Started"
}

路线部分定义为......

<route id="VCM047_store_list_schedule">
      <!-- Fire every 8 hours -->
      <from uri="timer://storeListTimer?fixedRate=true&amp;period=28800000"/>

      <transform>
        <simple>{{WebStoresToProcess}}</simple>
      </transform>

      <to uri="direct:splitStores" />
    </route>

我希望能够触发此部分进行测试。

因此,如果我可以停止/启动该部分,它可能会触发它。

这导致我尝试...

http://localhost:8080/gateway047/jolokia/exec/org.apache.camel:context=VCM047,type=routes,name=%22VCM047_store_list_schedule%22/stop()

但这永远不会回来。

任何人都可以提供一些关于如何通过Jolokia停止/启动骆驼节的建议。

1 个答案:

答案 0 :(得分:1)

Camel managedBean上的stop()操作是一个void操作,所以你不应该期望任何返回值。要找出当前状态,您可以再次获取状态()。

如果您遇到停止本身的问题(例如,它会挂起),您可以始终使用直接JMX客户端(如JVisualVM)来更好地支持JMX操作。与Jolokia(它是JMX的HTTP包装器)不同,独立工具可以为您提供更多支持,帮助您发现可用的操作,并消除您通过HTTP可能遇到的某些复杂情况。