レスポンスフロー処理標準Java実装

1823 ワード

レスポンスフロー処理はJavaに共通のAPIインタフェースを提供する.応答型ストリーム処理APIは、Publisher、Subscriber、Subscription、Processorの4つのインタフェースを理解する必要がある.
Publisher:境界のないデータシーケンスを提供し、サブスクライバの要求に基づいてサブスクライバに公開することができます.
public interface Publisher {

public void subscribe(Subscriber s);

}

Subscriber:データを購読し、メッセージを取得するには、購読通知、データ通知、エラー処理、処理を完了する必要があります.
public interface Subscriber {

    public void onSubscribe(Subscription s);

    public void onNext(T t);

    public void onError(Throwable t);

    public void onComplete();

}

Subscription:サブスクリプションを表し、サブスクリプションとパブリッシャをバインドし、サブスクリプションを制御できます(送信とキャンセルを要求します).
public interface Subscription {

    public void request(long n);

    public void cancel();

}

Processor:プロセッサ、すなわちサブスクライバであり、パブリッシャであり、内部でデータを処理してから再パブリッシングする.
public interface Processor extends Subscriber, Publisher {

}

レスポンス・フロー・スタンダードには、次のライブラリやフレームワークなど、いくつかの実装が準拠または互換性のあるスタンダードがあります.
  • RxJava2.0,
  • Reactor 3.0(Java 8が必要)、
  • Akka Streams,
  • Ratpack内蔵ライブラリ(RxJavaまたはReactorで代用することも可能)、
  • Vert.x内蔵ライブラリ(RxJavaでも代用可能)、
  • Spring Framework 5(Reactor 3.0内蔵)
  • Java 8におけるレスポンスストリームインタフェースは独立したパケットであり,Mavenで入手可能である.
    
       org.reactivestreams
       reactive-streams
       1.0.0
    
    

    Java 9には既に内蔵されているレスポンスストリームインタフェースがFlowパッケージの下にあります.Flowパッケージはまだバックプレッシャーのサポートがされていません.必要に応じてRxJavaパッケージ(2.0以上)を使用できます.
    応答ストリーム標準がない以前は、応答ライブラリは互換性がなく、応答ストリーム標準があり、異なる応答ストリーム機能を使用したり切り替えたりしやすい.例えば、MongoDBは標準的な応答フロー駆動を提供し、最新のReactorまたはRxJavaでMongoDBからのデータを消費することができます.
    参考資料:https://dzone.com/articles/what-are-reactive-streams-in-java https://community.oracle.com/docs/DOC-1006738