监控驼峰路线是否按预期工作

时间:2015-10-15 13:08:04

标签: apache-camel monitoring

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

我想知道一条路线是否正在工作"例如,你有一个侦听队列的路线(来自(" jms ..."))。也许队列中有消息,但是由于某些数据库问题或其他原因(取决于jms提供程序),侦听器无法将它们出列。使用上面提到的监控工具,您只能看到空中/失败/已完成的消息,但您不知道监听器是否能够收到消息 - >所以路线不是"工作"。

我知道还有apache BAM,也许我需要做更多的研究,但不知何故,它看起来像BAM创建了新的路线,你无法监控现有的路线。我也不想为每条路线实施/定义此类业务案例,我寻找更通用的方法。在骆驼3.0创意板上也提到BAM没有被触及5年,所以我认为人们经常不会使用它(这对我来说意味着它不适合他们的需求确切。)

1 个答案:

答案 0 :(得分:1)

前段时间我有类似的要求,最后我开发了一个用于监控的小型Camel应用程序。

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

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

(编辑:添加更多详情)

主要观点:

主要路径查询DB以控制和生成控制路线的实体

控制路线触发石英和http发布以下网址

.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);

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