# marathon-operation
**Repository Path**: lightops/marathon-operation
## Basic Information
- **Project Name**: marathon-operation
- **Description**: 操作marathon
- **Primary Language**: Java
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2021-05-10
- **Last Updated**: 2021-07-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# marathon-operation
## Introduction
获取marathon的apps和tasks信息,监听marathon的eventbus变动
## Documentation
- [中文文档](http://wwww.xuewuzhijing9981.top/marathon-spring-boot-starter)
## Features
- 1、获取marathon的apps信息和tasks信息。
- 2、监听marathon上所有app和task的变动信息。
## Getting started
maven
```
io.github.whyareyousoseriously
marathon-spring-boot-starter
0.0.1-RELEASE
```
### 获取apps和tasks的示例如下
- 1、方法一
```
V2App v2App = Marathon.getApps("localhost", 2222);
V2Task v2Task = Marathon.getTasks("localhost", 2222);
```
- 2、方法二
此方法适用于获取apps和tasks需要认证的情况,可以将认证信息放在header中
```
Map header = Maps.newHashMap();
V2App v2App = Marathon.getApps("http://localhost:2222/v2/apps", header);
V2Task v2Task = Marathon.getTasks("http://localhost:2222/v2/tasks", header);
```
### 监听marathon的变动示例如下
- 1、定义marathonEventHandler
```
import com.launchdarkly.eventsource.EventHandler;
import com.launchdarkly.eventsource.MessageEvent;
import io.github.whyareyousoseriously.marathonspringbootstarter.event.api.MarathonApiPostEvent;
import io.github.whyareyousoseriously.marathonspringbootstarter.event.deployment.MarathonDeploymentResultEvent;
import io.github.whyareyousoseriously.marathonspringbootstarter.event.healthcheck.MarathonHealthcheckEvent;
import io.github.whyareyousoseriously.marathonspringbootstarter.event.status.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author chenzhen
* Created by chenzhen on 2019/6/18.
*/
public class MarathonEventHandler implements EventHandler {
private static final Logger log = LoggerFactory.getLogger(MarathonEventHandler.class);
@Override
public void onOpen() throws Exception {
log.info("stream opened");
}
@Override
public void onClosed() throws Exception {
log.info("stream closed");
}
@Override
public void onMessage(String event, MessageEvent messageEvent) throws Exception {
switch (event) {
case MarathonHealthcheckEvent.FAILED_HEALTH_CHECK_EVENT:
//此处书写逻辑
log.info("health check event received. {}",messageEvent.getData());
break;
case MarathonHealthcheckEvent.HEALTH_STATUS_CHANGED_EVENT:
//此处书写逻辑
log.info("health status changed event received. {}",messageEvent.getData());
break;
case MarathonHealthcheckEvent.UNHEALTHY_TASK_KILL_EVENT:
//此处书写逻辑
log.info("task kill messageEvent received.{}",messageEvent.getData());
break;
case MarathonDeploymentResultEvent.DEPLOYMENT_SUCCESS: {
//此处书写逻辑
log.info("deployment success messageEvent received.{}",messageEvent.getData());
break;
}
case MarathonDeploymentResultEvent.DEPLOYMENT_FAILED: {
//此处书写逻辑
log.info("deployment failed messageEvent received.{}",messageEvent.getData());
break;
}
case MarathonAppTerminatedEvent
.APP_TERMINATED_EVENT:{
//此处书写逻辑
log.info("app terminated messageEvent received.{}",messageEvent.getData());
break;
}
case MarathonInstanceChangedEvent
.INSTANCE_CHANGED_EVENT:{
//此处书写逻辑
log.info("instance changed messageEvent received.{}",messageEvent.getData());
break;
}
case MarathonInstanceHealthChangedEvent
.INSTANCE_HEALTH_CHANGED_EVENT:{
//此处书写逻辑
log.info("instance health changed messageEvent received.{}",messageEvent.getData());
break;
}
case MarathonUnknownInstanceTerminatedEvent
.UNKNOWN_INSTANCE_TERMINATED_EVENT:{
//此处书写逻辑
log.info("unknown instance terminated messageEvent received.{}",messageEvent.getData());
break;
}
case MarathonStatusUpdateEvent
.STATUS_UPDATE_EVENT:{
//此处书写逻辑
log.info("status update messageEvent received.{}",messageEvent.getData());
break;
}
case MarathonApiPostEvent
.API_POST_EVENT:{
//此处书写逻辑
log.info("api_post_event received.{}",messageEvent.getData());
break;
}
default:
//此处书写逻辑
log.warn("messageEvent found in stream: " + messageEvent.getData());
break;
}
}
@Override
public void onComment(String comment) throws Exception {
log.debug("received a marathon event");
}
@Override
public void onError(Throwable t) {
log.error("Encountered EventSource error: " + t.getMessage());
log.debug("", t);
}
}
```
- 2、开始监听
```
MarathonEventBusListener marathonEventBusListener = new MarathonEventBusListener("http://localhost:2222",new MarathonEventHandler());
marathonEventBusListener.start();
```
## Communication
- [社区交流](http://www.xuewuzhijing9981.top/marathon-spring-boot-starter/community.html)
## Contributing
欢迎参与项目贡献!比如提交PR修复一个bug,或新建Issue讨论新特性或者变更。
## Copyright and License
This product is open source and free, and will continue to provide free community technical support. Individual or enterprise users are free to access and use.