Apache Camel使用之集成SpingBoot Actuator2.0

在完成Apache Camel组件之Control Bus
之后, 笔者突然想起来之前在 Apache Camel源码研究之集成到SpingBoot 中探究过Camel对于SpringBoot Actuator特性的支持,而这不正是我们所需要的吗?

1. 概述

在上一篇 Apache Camel源码研究之集成到SpingBoot 中,我们是基于SpringBoot1.x来研究的Actuator特性,随着SpringBoot升级到2.x,其Actuator特性的实现变化也是颇大,Apache Camel的实现相应发生了改变,如果要对其进行源码层次的讨论势必要牵扯到SpringBoot2.x相关变更,因此本文接下来的部分只要针对是应用方面,关于SpringBoot2.x Actuator特性的变更就留待后续发展吧。

2. 集成

SpringBoot以配置简单闻名,这里也不例外。

2.1 引入依赖包

Apache Camel对于SpringBoot Actuator特性的支持是直接包含在camel-spring-boot-x.yy.z.jar中的。因此只需要在pom.xml进行一次引用即可。


<dependency>
	<groupId>org.apache.camelgroupId>
	<artifactId>camel-spring-boot-starterartifactId>
	<version>${camel.version}version>
dependency>

<dependency>
    <groupId>org.apache.camel.springbootgroupId>
    <artifactId>camel-spring-boot-starterartifactId>
    <version>${camel.version}version>
dependency>

2.2 必要配置文件项

SpringBoot2.x之后,出于安全性考虑,Actuator特性需要显式声明,如下所示,在配置文件application.properties中进行如下设置:

# 只开放camel相关的Actuator特性. 另外可以通过设置为 * 来开启所有的接口.
# camelroutes  /  * 
management.endpoints.web.exposure.include=camelroutes,camelroutecontroller
# 允许对route进行start, stop等操作
management.endpoint.camelroutes.readOnly=false

######## 对等的yaml格式
management:
  endpoints:
    web:
      exposure:
        include: camelroutes,camelroutecontroller
  endpoint:
    camelroutes:
      read-only: false

3. 操作清单

本文灵魂所在,以下列举Camel提供的所有Actuator功能(相关源码为CamelRoutesEndpoint类等)。

URL 用途 HTTP Method 参数说明
http://ip:port/context/actuator/camelroutes 获取CamelContext中定义的所有Route GET
http://ip:port/context/actuator/camelroutes/{id} 获取某个Route的定义信息,XML格式的 POST {id} 为相应Route的Id
http://ip:port/context/actuator/camelroutes/{id}/{action} 查看指定Route基本信息 GET 1. {id} 为相应Route的Id
2. action可选项:
detail,
info
http://ip:port/context/actuator/camelroutes/{id}/{action} 操作指定Route POST 1. {id} 为相应Route的Id
2. action可选项:
stop,
start,
reset,
suspend,
resume
注意: 设置: ”Content-Type“ : “application/json”
http://ip:port/context/actuator/camelroutecontroller 默认返回的是空集合 GET

注意:
关于"启动/关闭Route",这里专门提供一个样例:

var operateUrl = "../actuator/camelroutes/{0}/{1}"
utils.ajaxUrl(utils.strFormat(operateUrl,routeId,"start"),
			{},
			function(data){$('#table_list_1').trigger("reloadGrid");console.log("启动成功");},
			function(err){console.error(err);},
			{headers:{"Content-Type":"application/json"}}); // 重点是这一行必须要

4. Links

  1. Apache Camel组件之Control Bus
  2. Apache Camel源码研究之集成到SpingBoot
  3. Office Site - Camel And Spring
  4. Spring Boot 2.0官方文档之 Actuator

你可能感兴趣的:(Apache,Camel)