当前位置: 首页 > 知识库问答 >
问题:

如何在google guava eventbus中处理具有相同参数的多个侦听器

毛胜
2023-03-14

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

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

我的问题是,在将事件发布到eventbus时,如何触发特定的侦听器,或者它将调用这两个侦听器?

共有1个答案

夹谷烨赫
2023-03-14

一些简单的解决方案:

@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);
 类似资料:
  • 问题内容: 在Django视图中,你可以访问,因此在视图中你可以执行以下操作: 实际的request.GET[‘myvar’]对象类型是: 现在,如果要传递具有相同参数名称的多个变量,即: http://example.com/blah/?myvar=123&myvar=567 你想要为参数返回,然后执行以下操作: 但是,当你尝试仅获得url中传递的最后一个值时,即在上面的示例中,你将获得567,

  • 我真的很感激你能提供的任何帮助。

  • 使用spring batch/spring boot,是否可以在每个线程中使用不同的多次启动具有读取器、处理器和写入器的spring batch作业? 我的用例: 我有许多不同的文件夹,我需要观看。如果新文件进入一个文件夹,我需要调用该作业,并在作业处理期间锁定该文件夹。 这可能发生在不同数量的文件夹中,这就是为什么我需要一个spring批处理作业的多个实例,但每次使用不同的。 每个文件夹一个作业

  • 问题内容: 我有一个PHP应用程序,有时需要处理URL,其中URL中的多个参数具有相同的名称。是否有一种简单的方法来检索给定键的所有值?PHP $ _GET仅返回最后一个值。 具体来说,我的应用程序是一个OpenURL解析器,可能会获得如下URL参数: (是的,我知道这很丑陋,欢迎来到我的世界)。请注意,键“ rft_id”出现两次: 将返回just ,先前的值()已被覆盖。 我想同时访问这两个值

  • 为了理解TypeScript的精神,我在我的组件和服务中编写了全类型签名,这扩展到了angular2表单的自定义验证函数。 我知道我可以重载函数签名,但这需要每个返回类型的参数不同,因为将每个签名编译为单独的函数: 我还知道我可以返回单个类型(如Promise),它本身可以是多个子类型: 但是,在angular2自定义表单验证器的上下文中,单个签名(一个类型为的参数)可以返回两种不同的类型:带有表

  • 问题内容: 我试图验证的多个文本框输入(即它们应该是一个数字),发现下面的有用的代码片断在这里。 但是,如果我有三个文本框(,和),我怎么能申请具有相同功能的每一个听者验证,而不必重复()码三次? 我不想实现一个switch语句或类似语句(来决定将其应用于哪个文本框),我想要一个更通用的东西(将来也许可以将其提供给其他类使用)。 问题答案: 定义事先并获得实际来自: 如果您还想在其他地方使用它,请