1.简述

    后端项目中,有同事使用到eventbus,学习并且记录一下。
    eventbus原理图
image.png

2.demo

引入依赖

<dependency>
    <groupId>org.greenrobot</groupId>
    <artifactId>eventbus</artifactId>
    <version>3.2.0</version>
</dependency>

配置文件


@Configuration
public class EventBusConf {
    @Bean
    public EventBus eventBus(){
        return new EventBus();
    }
}

订阅者

@Service
@Slf4j
public class EventBusSubscribe {
    @Autowired
    private EventBus eventBus;

    @Subscribe
    public void getEventBusMessage(EventMessage eventMessage){
        log.info(eventMessage.getMessage());
        log.info(eventMessage.getType() + " ");
    }

    @PostConstruct
    public void init(){
        eventBus.register(this);//注册到该eventBus上
    }
}

在controller中post 一个消息

@RestController
public class EventBusController {

    @Autowired
    private EventBus eventBus;

    @GetMapping("/postMessage")
    public void postMessage(){
        EventMessage eventMessage = new EventMessage(1000,"+8615434789009");
        eventBus.post(eventMessage);
    }
}

结果
image.png

3.具体使用场景

    项目中短信,邮件服务在一个服务中,如果别的服务调用该服务就需要引入该服务的FeignClient项目,然后再进行调用FeignClient的接口,如果直接调用的话就比较麻烦,所以在调用的时候可以将消息发送到EventBus中,然后订阅者完成相应的操作。这样做的缺点是代码可读性降低,不能通过代码知道具体的订阅者做了什么,我们在项目中使用该其只调用发送短信的接口。


你若安好便是晴天
82 声望10 粉丝

« 上一篇
java加解密
下一篇 »
分布式事务

引用和评论

0 条评论