我正在寻找一种方法来杀死Mesos任务或关闭mesos-rxjava库中的框架。似乎在subscribe()之后,向Mesos发送调用的唯一机会是响应来自Mesos的事件。我已经能够将Fenzo集成到一个单独的调度循环中,通过使用Promise中的Observable响应提供租约并存储Fenzo循环的承诺,因此可能可以对“任务启动”更新事件执行相同操作,保持承诺杀死该任务,但是你不能取消尚未启动的任务,并且它不能解决关闭框架的问题。或者也许有一种方法可以使用库的身份验证来简单地以非反应方式发送HTTP请求?我缺少一个更清洁的解决方案吗?
答案 0 :(得分:1)
我认为你在这里寻找的是TEARDOWN Call [1],当这个调用从调度程序发送到mesos时,它将启动整个集群中框架的完全关闭。
通过将Subject编织到Observable中(您可以在下面的链接2中看到一起编织Observables的示例),您提供给mesos-rxjava客户端,您可以为自己提供一个句柄,以便能够发送不是对事件的直接反应。下面的链接3是指向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