同一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);