3

リアクター( https://github.com/reactor/reactor )を使用して、次のようないくつかのイベントを通知します

 commandReactor.notify("CREATE_CUSTOMER", Event.wrap(customer));
 commandReactor.notify("CREATE_ORDER", Event.wrap(order));

「CREATE」で始まるすべてのイベントを選択するセレクターを実装するにはどうすればよいですか? 何かのようなもの

@Selector(value = "CREATE*", reactor = "@commandReactor")

前もって感謝します。

4

1 に答える 1

7

RegexSelector[1] を使用してそれを行うことができます。

    commandReactor.notify("CREATE_(.+)", Event.wrap(obj));

または、注釈を使用して:

    @Selector(value = "CREATE_(.+)", type = SelectorType.REGEX)

group1次に、ハンドラーでtoのヘッダーを見て、キャプチャ グループを調べることができますgroupN

new Consumer<Event<Object>>>() {
  public void accept(Event<?> ev) {
    String type = ev.getHeaders().get("group1");
    if("CUSTOMER".equals(type)) {
      // handle customers
    } else if("ORDER".equals(type)) {
      // handle orders
    }
}

[1] - http://reactor.github.io/docs/api/reactor/event/selector/RegexSelector.html

于 2013-11-05T13:51:44.177 に答える