如何在 google 番石榴事件总线中处理具有相同参数的多个侦听器

How to handle multiple listeners with same argument in google guava eventbus

我有两个监听器在将事件发布到 eventbus.But 时将接受相同的参数,即使接受相同的参数这些监听器的行为不同。

public class EventListener1 {



    @Subscribe
    public void executeJob(jobVO jobVO ) {
        //logic goes here
    }
}



public class EventListener2 {



    @Subscribe
    public void cancelJob(jobVO jobVO ) {
        //logic goes here but different
    }
}

EventBus eventBus = new EventBus();
eventBus.register(new EventListener1());
eventBus.register(new EventListener2());

用户按下执行按钮并希望触发 EventListener1 取消作业。

执行作业

JobVO j=new JobVO();
j.setAction("executeJob");
etc... 
eventBus.post(j);

取消作业

JobVO j=new JobVO();
j.setAction("cancelJob");
etc... 
eventBus.post(j);

我的问题是,在将事件发布到事件总线时如何触发特定的监听器,或者它会同时调用两个监听器?

一些简单的解决方案:

@Subscribe
public void executeJob(jobVO jobVO ) {
    if (!jobVO.getAction().equals("executeJob")) {
       return;
    }
    //logic goes here
}

...或者,不要使用 EventBus

JobVO j=new JobVO();
j.setAction("executeJob");
etc... 
eventListenerForExecuting.executeJob(j);