mesos-rxjava -- 终止任务和关闭调度程序

mesos-rxjava -- kill tasks and shutdown scheduler

我正在寻找一种方法来终止 Mesos 任务或关闭 mesos-rxjava 库中的框架。似乎在 subscribe() 之后,发送调用到 Mesos 的唯一机会是响应来自 Mesos 的事件。我已经能够将 Fenzo 集成到一个单独的调度循环中,方法是使用 Promise 中的 Observable 响应提供租约并为 Fenzo 循环存储该承诺,因此可能可以对 "task started" 更新事件执行相同的操作并遵守终止该任务的承诺,但是您无法取消尚未开始的任务,并且无法解决关闭框架的问题。或者也许有一种方法可以使用库的身份验证以非反应性方式简单地发送 HTTP 请求?我缺少更清洁的解决方案吗?

我认为您在这里寻找的是 TEARDOWN 调用 [1],当此调用从调度程序发送到 mesos 时,它将启动跨集群的框架的完全关闭。

通过将一个 Subject 编织到 Observable 中(您可以在下面的 link 2 中看到将 Observable 编织在一起的示例)您提供给 mesos-rxjava 客户端,您可以为自己提供一个句柄,以便能够发送不是对事件的直接反应的呼叫。下面的 link 3 是 link 到 Github 的问题,对此做了更多解释。

[1] https://github.com/apache/mesos/blob/master/docs/scheduler-http-api.md#teardown
[2] https://github.com/mesosphere/mesos-rxjava/blob/master/mesos-rxjava-example/mesos-rxjava-example-framework/src/main/java/com/mesosphere/mesos/rx/java/example/framework/sleepy/Sleepy.java#L140
[3] https://github.com/mesosphere/mesos-rxjava/pull/63#issuecomment-235043568