2017-10-18 12 views
0

春の雲カフカストリームに非同期で書きたいと思います。例えば、春の雲カフカストリームに非同期で書き込み

Class SomeClass{ 

@StreamLister(Processor.INPUT) 
public void receiveEvents(String e){ 

    class ThreadExecutor implements Runnable { 
    private String message; 

    public ThreadExecutor(message){ 
     this.message = message; 
    } 

    public void run(){ 
     //after processing the string I will publish it 
     message = message + "done"; 
     writeToStream(message); 
    } 
    } 

    Executors.newCachedThreadPool().execute(new ThreadExecutor(e)); 
} 

@SendTo //not sure how to write it back 
public Message<String> writeToStream(String message){ 
    //this is what I want to know 
    } 

} 

したがって、上記の例では、 writeToStreamメソッドを呼び出す方法を知りたいので、kafkaに書き戻します。基本的には、ポーリングとは異なり、タスクの完了時にストリームに書きたいと思っています。助けてください。

答えて

0

ただし、これがなぜ必要なのかはっきりしません。 kafkaセンドはデフォルトでは既に非同期です。

+0

ありがとうございました。私はこのように解決しました。私は私の質問に答えることができません。私はその質問に答えるためにブロックされています。ストリームリスナーは受信するメッセージごとにスレッドを作成しますか?私の場合は、出力を返すだけでメッセージを受信して​​いました。だから私はそれを非同期的に送るスレッドを作った。 –

+0

あなたの質問に答えたのであれば、なぜ別の回答を追加する必要がありますか?バインダーの '並行性'を増やして複数の同時配送を得ることができます。その数のパーティションが必要です。 kafkaはパーティション間でパーティションを配布します。同じパーティションからのメッセージは、同じスレッドで配信されます。 –

関連する問題