3

メッセージを消費して保存し、成功または失敗を返信するユースケースがあります。mongo 挿入は Observable を返すので、flatmap を使用して連鎖できます。問題は、挿入オブザーバブルが挿入の結果を発行することですが、返信するには最初のオブザーバブルから発行された元のメッセージが必要です。したがって、これを機能させるために、最初の Observable のサブスクライブ内で挿入を実行し、2 番目のサブスクライブ内で応答しています。

flatmap のようなある種の演算子を使用して、より反応的な方法でこれを達成したいと考えていました。演算子のリストを検索しましたが、探しているものが何も見つかりません。

eb.consumer("persister.save.event").toObservable()
    .subscribe(msg -> {
        mongo.insertObservable("event", (JsonObject) msg.body())
            .subscribe(
                res -> msg.reply(new JsonObject().put("success", true)),
                error -> msg.fail(500, "failed to save event"));
            });

上記のコードはそれを行うべき方法ですか、それともより良いアプローチがありますか? 2 つのサブスクライブは適切ではありません。

4

1 に答える 1