我正在为Apache Mesos编写客户端'使用RxJava和RxNetty的新HTTP Scheduler API。
我设法成功创建了与RxNetty的连接,并从生成的分块流中创建了Observable<Event>
。
现在我正试图建模一个可用于将呼叫发送回Mesos的接收器,以声明/拒绝资源提供,确认任务状态更新等。
发送给Mesos的邮件是Call
,我需要能够为每个onCompleted
提供一个onError
或Call
水槽。这是因为Mesos对发送给它的Call
执行了同步验证。
我基本上试图允许以下内容:
final MesosSchedulerClient client = new MesosSchedulerClient();
final Observable<Event> events = client.openEventStream(subscribeCall);
final Observable<Observable<Call>> ackCalls = events
.filter(event -> event.getType() == Event.Type.UPDATE && event.getUpdate().getStatus().hasUuid())
.zipWith(frameworkIDObservable, (Event e, AtomicReference<FrameworkID>> fwId) -> {
final TaskStatus status = e.getUpdate().getStatus();
final Call ackCall = ackUpdate(fwId.get(), status.getUuid(), status.getAgentId(), status.getTaskId());
return Observable.just(ackCall)
.doOnComplete(() -> { ... })
.doOnError((e) -> { ... });
});
client.sink(ackCalls);
现在我已经提出了一个自定义对象[1],它扩展了主题并指定了Call
的{{1}}和Action0
以及onCompleted
{ {1}}。但是,如果可能的话,我更愿意使用RxJava中的现有结构。我已经提出的样本用法[2]。
非常感谢任何指导。
答案 0 :(得分:0)
我最终得到的解决方案是创建一个自定义订阅服务器,它将处理事件流并将请求发送回mesos。