torutkのブログ

ソフトウェア・エンジニアのブログ

EventBus(続々)

同一Java VM内でのイベント通知ライブラリEventBusについての記事です。

の続きとなります。

前回は、通知したいイベントの型に基づき受領するサンプルを示しました。今回は、イベントの型に加えて、トピックと呼ぶ文字列に基づき受領するサンプルを示します。

Publish/Subscribe(発行者/購読者)モデルでは、Topic(トピック、題目)を指定したイベントの発行と受領が一般的に可能です。EventBusでは、イベントの発行者がTopicを文字列で指定し、購読者はTopicを完全指定した文字列や正規表現のパターンで指定します。

トピックを指定したイベントの発行

    SimpleEvent event = new SimpleEvent(count);
    String topic = "simple.even";
    EventBus.publish(topic, event);

トピックを指定したイベントの受領

EventTopicSubscriberインタフェースを実装したイベント受領するクラス

import org.bushe.swing.event.EventTopicSubscriber;

public class TopicSubscriber implements EventTopicSubscriber<SimpleEvent> {
    @Override
    public void onEvent(String topic, SimpleEvent data) {
        // イベント受領処理
    }
}

イベント受領インスタンスの生成と登録(トピックを文字列で指定)

    TopicSubscriber topicSubscriber = new TopicSubscriber();
    EventBus.subscribe("simple.even", topicSubscriber);

イベント受領インスタンスの生成と登録(トピックを正規表現で指定)

import java.util.regex.Pattern;
         :
        TopicSubscriber regexTopicSubscriber = new TopicSubscriber();
        EventBus.subscribe(Pattern.compile("simple\\.(even|odd)"), regexTopicSubscriber);