DTeam 团队日志

Doer、Delivery、Dream

Vert.x技巧:使用EventBus-Interceptor拦截消息

胡键 Posted at — Feb 7, 2017 阅读

Vert.x用久了肯定有这样的想法:拦截 EventBus 上发送的所有消息。这个需求用 Vertx EventBus Interceptor 可以非常简单的实现,可惜的是,Vert.x 文档却并没有明确的指出来。

其实它的使用很简单,直接看代码吧(Groovy 代码):

vertx.eventBus().addInterceptor { sendContext ->
    Message message = sendContext.message()
    // 自由发挥……

    sendContext.next()
}

最后的那句 sendContext.next() 非常关键:如果没写,后续的 consumer 将无法收到刚刚被你拦截的消息!所以,一定要确保你是有意不写的。

其他的就没什么可说得了,基本跟其他工具提供的拦截器的功能类似,查查 API 文档,看看代码,都能搞清楚。