我是靠谱客的博主 清秀盼望,最近开发中收集的这篇文章主要介绍EventBus消息总线 使用举例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 代码示例
    • 总结
    • 拓展与思路

先上代码看下如何使用

代码示例

支付成功事件,在这里模拟一个事件,当该事件发生时,我们就给其他监听器发送消息。

public class PaymentSuccessfulEvent {
    private String action;

    PaymentSuccessfulEvent(String action) {
        this.action = action;
    }

    String getAction() {
        return action;
    }

    public void setAction(String action) {
        this.action = action;
    }

}

监听器,当有注册到消息总线上的事件发生时,会触发监听器的paymentEvent方法

public class PaymentSuccessfulEventListener {

    private static int eventsHandled;
    private static final Logger LOG = LoggerFactory.getLogger(PaymentSuccessfulEventListener.class);


    @Subscribe
    public void paymentEvent(PaymentSuccessfulEvent event) {
        LOG.info("do event [" + event.getAction() + "]");
        eventsHandled++;
    }


    int getEventsHandled() {
        return eventsHandled;
    }

    void resetEventsHandled() {
        eventsHandled = 0;
    }
}

测试类,首先在消息总线eventBus上注册监听器,然后使用eventBus的post方法触发这个事件的成功事件,给监听器发送消息:

public class GuavaEventBusUnitTest {

    private PaymentSuccessfulEventListener listener;
    private EventBus eventBus;

    @Before
    public void setUp() {
        eventBus = new EventBus();
        listener = new PaymentSuccessfulEventListener();

        eventBus.register(listener);
    }

    @After
    public void tearDown() {
        eventBus.unregister(listener);
    }

    @Test
    public void paymentSuccessfulEvent_whenEventHandled_thenSuccess() {
        listener.resetEventsHandled();

        PaymentSuccessfulEvent paymentEvent = new PaymentSuccessfulEvent("PaymentSuccessful Event");
        eventBus.post(paymentEvent);

        assertEquals(1, listener.getEventsHandled());
    }

}

结果:

13:53:40.789 [main] INFO eventbus.PaymentSuccessfulEventListener - do event [PaymentSuccessful Event]

成功触发了事件

总结

写完了这个示例,似乎看起来很简单。

那么其实呢,就是不难qwq 哈哈哈哈

那这个玩意看起来好像也没什么用,其实的话,在代码规模扩大的时候,还是能省不少重复代码的。

拓展与思路

举个使用的例子:

请添加图片描述

这样做实现了消息总线和mq适配

在实际场景中完全可以这样用,比如监听订单状态的改变。

最后

以上就是清秀盼望为你收集整理的EventBus消息总线 使用举例的全部内容,希望文章能够帮你解决EventBus消息总线 使用举例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部