使用Spring-events自定义事件进行消息通讯示例

Spring-events是一个类似于消息中间件的用处,但是还是没有消息中间件好用,但是可以用作本地消息来使用

创建事件发布者

@Component
// 实现事件发布
public class BaseEvent implements ApplicationEventPublisherAware {

    private ApplicationEventPublisher publisher;

    public ApplicationEventPublisher getApplicationEventPublisher() {
        return this.publisher;
    }

    @Override
    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
        this.publisher = applicationEventPublisher;
    }
}

@Component

// 发布事件基础类
public abstract class SupportEvent<D extends ApplicationEvent> extends BaseEvent {
    public abstract void sendEventMessage(D d);
}

@Component
// 登录事件发布者
public class LoginPublisher extends SupportEvent<LoginEvent> {

    @Override
    public void sendEventMessage(LoginEvent loginEvent) {
        super.getApplicationEventPublisher().publishEvent(loginEvent);
    }
}

创建事件监听者

@Component
public class LoginListener {

    @EventListener
    // 是否异步监听
    @Async
    public void handler(LoginEvent loginEvent) {
        System.out.println("LoginEvent收到消息");
        System.out.println(loginEvent.getContent());
    }
}

测试

2020-06-08 11:28:27.661  INFO 21176 --- [nio-6379-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-06-08 11:28:27.661  INFO 21176 --- [nio-6379-exec-2] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-06-08 11:28:27.667  INFO 21176 --- [nio-6379-exec-2] o.s.web.servlet.DispatcherServlet        : Completed initialization in 6 ms
LoginEvent收到消息
我是登录事件

这只是一个基础的示例,可能有些时候用不上,但是你起码要知道有着一种方法实现本地消息通讯。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值