SpringBoot - 发布订阅(ApplicationListener和ApplicationEventPublisher)
1、非注解方式
1.1、自定义事件
@Getter
@Setter
public class ConsumerOfflineEvent extends ApplicationEvent {
private String groupId;
public ConsumerOfflineEvent(Object source) {
super(source);
}
}
1.2、实现ApplicationListener接口
public class ConsumerThread implements ApplicationListener<ConsumerOfflineEvent> {
@Override
public void onApplicationEvent(ConsumerOfflineEvent event) {
LogUtil.info("消费者节点开始下线,消费者组id:{}", event.getGroupId());
}
}
1.3、发布事件
@Compont
public class EventPublisher {
@Autowired
private ApplicationEventPublisher eventPublisher;
public void publishConsumerOfflineEvent(String groupId) {
ConsumerOfflineEvent event = new ConsumerOfflineEvent("消费者节点下线事件");
event.setGroupId(groupId);
eventPublisher.publishEvent(event);
}
}
2、注解方式
2.1、自定义事件
```java
@Getter
@Setter
public class ConsumerOfflineEvent{
private String groupId;
public ConsumerOfflineEvent(Object source) {
super(source);
}
}
2.2、监听事件
@Component
public class EventListen{
@Autowired
private ApplicationEventPublisher eventPublisher;
@EventListener(ConsumerOfflineEvent.class)
public void listenEvent(ConsumerOfflineEventevent) {
}
2.3、事件发布
@Compont
public class EventPublisher {
@Autowired
private ApplicationEventPublisher eventPublisher;
public void publishConsumerOfflineEvent(String groupId) {
ConsumerOfflineEvent event = new ConsumerOfflineEvent("消费者节点下线事件");
event.setGroupId(groupId);
eventPublisher.publishEvent(event);
}
}