0

LMAX ディスラプターが高性能なスレッド間メッセージング ライブラリであることを知りました。しかし、使用しようとすると、イベントハンドラーがコールバックメソッドを使用してデータを処理することがわかりました。

void onEvent(T event,
       long sequence,
       boolean endOfBatch)
         throws java.lang.Exception

パブリッシャーが RingBuffer にイベントを発行したときに呼び出されます

しかし、コールバックを使用してデータを取得しない場合は、while(true) を記述して自分でデータを取得します。どうすればよいですか?

ありがとう!

4

1 に答える 1

0

イベントをキューにプッシュするように、コールバックを記述する必要があります。その後、キューを反復処理できます。

Queue<Event> queue = new ArrayBlockingQueue(10);

void onEvent(Event event,
        long sequence,
        boolean endOfBatch)
        throws java.lang.Exception {
    queue.add(event);
}

public void test() {
    for ( Event event : queue ) {
        // Your stuff here.
    }
}
于 2015-01-21T12:23:15.490 に答える