概述
文章目录
- 代码示例
- 总结
- 拓展与思路
先上代码看下如何使用
代码示例
支付成功事件,在这里模拟一个事件,当该事件发生时,我们就给其他监听器发送消息。
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消息总线 使用举例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复