Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在RxJava中为需要onComplete/onError的事件建模事件接收器_Java_Client_Rx Java_Event Stream - Fatal编程技术网

在RxJava中为需要onComplete/onError的事件建模事件接收器

在RxJava中为需要onComplete/onError的事件建模事件接收器,java,client,rx-java,event-stream,Java,Client,Rx Java,Event Stream,我正在使用RxJava和RxNetty为apachemesos的新HTTP调度器API编写一个客户端 我成功地创建了与RxNetty的连接,并从生成的分块流中创建了一个可观察的对象 现在,我正试图建立一个接收器模型,该接收器可用于向Mesos发回呼叫,以声明/拒绝资源提供、确认任务状态更新等 将要发送到Mesos的消息是一个呼叫,我需要能够为每个进入接收器的呼叫提供一个onCompleted或onError。这是因为Mesos对发送给它的调用执行同步验证 我基本上是在考虑以下因素: final

我正在使用RxJava和RxNetty为apachemesos的新HTTP调度器API编写一个客户端

我成功地创建了与RxNetty的连接,并从生成的分块流中创建了一个可观察的对象

现在,我正试图建立一个接收器模型,该接收器可用于向Mesos发回呼叫,以声明/拒绝资源提供、确认任务状态更新等

将要发送到Mesos的消息是一个呼叫,我需要能够为每个进入接收器的呼叫提供一个onCompleted或onError。这是因为Mesos对发送给它的调用执行同步验证

我基本上是在考虑以下因素:

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],它扩展了Subject,并为onCompleted指定了调用和Action0,为onError指定了Action1。不过,如果可能的话,我更愿意使用来自RxJava的现有构造。我提出的示例用法[2]

任何指导都将不胜感激

[1]


[2]

我最终的解决方案是创建一个自定义订阅者,该订阅者将处理事件流并将请求发送回mesos。

我不熟悉mesos,也不完全理解您想要实现的目标。扩展主题似乎是不必要的,因为您不接受订阅者;相反,您可能希望使用订阅服务器。创建或扩展订阅服务器。感谢@akarnokd的指导,我将研究创建订阅服务器。感谢@akarnokd,我已切换到使用订阅服务器。