Apache camel 监控驼峰路线是否按aspected工作

Apache camel 监控驼峰路线是否按aspected工作,apache-camel,monitoring,Apache Camel,Monitoring,我正在寻找如何监控骆驼路线功能的最佳实践。 我知道有像hawtio和camelwatch这样的监控工具,但这并不是我想要的 我想知道一个路由是否像aspected那样“工作”,例如,您有一个侦听队列的路由(来自(“jms…”)。队列中可能有消息,但侦听器由于某些db问题或其他原因(取决于jms提供程序)无法将它们出列。使用上面提到的监控工具,您只能看到正在进行/失败/完成的消息,但看不到侦听器是否能够获取消息->因此路由不“工作” 我知道还有ApacheBAM,也许我需要做更多的研究,但不知何故

我正在寻找如何监控骆驼路线功能的最佳实践。 我知道有像hawtio和camelwatch这样的监控工具,但这并不是我想要的

我想知道一个路由是否像aspected那样“工作”,例如,您有一个侦听队列的路由(来自(“jms…”)。队列中可能有消息,但侦听器由于某些db问题或其他原因(取决于jms提供程序)无法将它们出列。使用上面提到的监控工具,您只能看到正在进行/失败/完成的消息,但看不到侦听器是否能够获取消息->因此路由不“工作”


我知道还有ApacheBAM,也许我需要做更多的研究,但不知何故,它看起来像是BAM创建了新的路由,而您无法监视现有的路由。我也不想为每条路线实现/定义这样的业务案例,我寻求一种更通用的方法。camel 3.0创意板上也提到,BAM已经5年没有使用过了,所以我认为人们不会经常使用它(这意味着对我来说,它并不完全符合他们的需求)。

不久前我也有类似的要求,最后我开发了一个用于监控的小型camel应用程序

它在计时器上运行,通过JMX/Jolokia查询安装在远程服务器上的不同Camel应用程序,如果我感兴趣的路由的
LastExchangeCompletedTimestamp
早于某个时间间隔,则向管理员发送邮件

也许这种方法对于您的场景来说太简单了,但可能是一种选择

(编辑:添加更多详细信息)

要点:

Main routes查询数据库中要控制的实体,并生成控制路由

控制quartz和http上的路由将触发以下url

.to("http://server:port/app/jolokia/?"+
"maxDepth=7&maxCollectionSize=500&ignoreErrors=true&canonicalNaming=false")
发送以下
jsonRequest
正文

LinkedHashMap<String,Object> request=new LinkedHashMap<String,Object>();
request.put("type","read");
request.put("mbean","org.apache.camel:"+entity.getRouteId());
jsonRequest=mapper.writeValueAsString(request);
LinkedHashMap请求=新建LinkedHashMap();
请求。输入(“类型”、“读取”);
put(“mbean”,“org.apache.camel:”+entity.getRouteId());
jsonRequest=mapper.writeValueAsString(请求);

作为响应,您将获得另一个JSON,解析它并获取
LastExchangeCompletedTimestamp
value

看起来是一种很好的简单监控方法。也许你有更多的细节给我?把一个应用程序发布到一个帖子里并不容易。我已试图提炼出最重要的几点。无论如何,这个小应用程序的灵感来自Hawt.io。如果您有疑问,请安装它并检查它的工作方式。我将不得不做一些关于jms和quartz/timer路由的额外工作,但您的方法看起来非常好。您知道是否可以设置一些“自定义”jmx属性吗?我的想法是实现一个控制路由来收集所有运行路由的指标。由于这个指标,我想为应用程序设置一个“全局”状态(例如过载、正常、警告、错误…)。如果我可以添加这个状态,比如说,自定义jmx属性,那么使用jolokia请求查询它应该很容易。对不起,我不是jmx/jolokia的专家,我不知道这是否可行。到目前为止,我只使用JMX进行一些基本的工作(读取值或写入log4j2配置)