Java 使用Guava EventBus的条件订阅

Java 使用Guava EventBus的条件订阅,java,guava,Java,Guava,我正在考虑在我的应用程序中使用从一个或多个数据创建者到数据使用者分发数据(Doubles) 我知道在我的consumer类中,我需要用@Subscribe注释我的数据处理程序。是否有办法使此订阅具有条件?比如说 @Subscribe {newValue > 0.0} public void valueUpdated(Double newValue) 我可以在我的valueUpdated方法中添加检查,但是有没有办法阻止EventBus发送我的订阅者不感兴趣的值 是否有类似于EventBu

我正在考虑在我的应用程序中使用从一个或多个数据创建者到数据使用者分发数据(
Double
s)

我知道在我的consumer类中,我需要用
@Subscribe
注释我的数据处理程序。是否有办法使此订阅具有条件?比如说

@Subscribe {newValue > 0.0} public void valueUpdated(Double newValue)
我可以在我的
valueUpdated
方法中添加检查,但是有没有办法阻止
EventBus
发送我的订阅者不感兴趣的值

是否有类似于EventBus的产品可以提供这种功能?

可能会有所帮助


另外:在检查EventBus之后,我认为它是基于类型的调度,无法应用基于条件的调度。如果您坚持使用表达式语言,您可以将其作为注释放在订阅服务器中。但是表达式语言是为灵活性而不是速度而设计的。

我不认为使用DSL进行条件分派比处理程序中第一句使用相同条件有什么显著的优势。事实上,DSL可能会慢很多。@U Mad-谢谢你的评论。我有一个可以拥有大量订户的用例。在这种情况下,我认为使用条件分派可能更有效。虽然我同意处理程序中的条件使事情更简单,但我不认为你能在这里获得任何加速,至少在没有数千个订户和/或普通无条件情况下不会。像
{newValue>0.0}
那样编写,它需要一个解释器,并且可能需要在代码中花费数百个琐碎的测试。像
MyPositiveDoublePredicate.class那样编写它可能要快得多,但不是特别方便。在任何情况下,它都会给普通用户带来一些成本。没有任何可能的方式可以使有条件的分派更有效。请在订阅者登记。@Shengyuan Lu-谢谢你的回答。你能给我举个例子说明在这种情况下如何使用SpEL吗?