2017-01-17 1 views
0

件名として、Mono.subscribeの4番目の変種は、成功した消費者と完全な消費者を呼び出すようではありません。サブスクリプションコンシューマを呼び出すだけです。Mono.subscribe(consumer、errorConsumer、completeConsumer、subscriptionConsumer)はconsumerおよびcompleteConsumerを呼び出しませんか?

次のコードは、あなたが最初のrequestを駆動するためConsumer<Subscription>subscribeのバージョンが意図されているためです

CountDownLatch latch = new CountDownLatch(3); 
    Mono.just(1).subscribe(i -> latch.countDown(), throwable -> {}, latch::countDown, s -> latch.countDown()); 
    boolean success = latch.await(1, TimeUnit.SECONDS); 
    Assert.assertEquals(true, success); 

答えて

0

に失敗しました。あなたは、消費者にサブスクリプションにrequest(n)を呼び出さないと、データが放出されませんとMonoは、完全な...

これは期待どおりに動作しません。SimonBaslé@

CountDownLatch latch = new CountDownLatch(3); 
Mono.just(1).subscribe(
      i -> latch.countDown(), 
      throwable -> {}, 
      latch::countDown, 
      s -> { 
       s.request(Long.MAX_VALUE); 
       latch.countDown(); 
      }); 
boolean success = latch.await(1, TimeUnit.SECONDS); 
Assert.assertEquals(true, success); 
+0

おかげで、しかし、メソッド名はそれが購読していることを示しています。したがって、ユーザーがそこを通過したサブスクリプションを使用して手動でリクエストする必要があるというのは少し誤解を招くことです。 javadocではこれについて何か手がかりを与えません。 – Wins

+0

私は同意する、これは明確にする必要があります。これは、パラメータの説明に記載されています。 "@param subscriptionConsumerサブスクリプションシグナルで呼び出されるコンシューマ、初期サブスクリプション#要求(long)要求に使用されるコンシューマ、 –

関連する問題