高级项目

问答社交网站

技术栈

SpringBoot + Mybatis + Redis + MySQL + Python + Solr

功能

  • 登录注册
  • 发表问题
  • 评论(给问题/评论评论)
  • 前缀树敏感词过滤
  • 点赞(给问题/评论点赞)
  • 关注好友/问题
  • 搜索
  • 不同用户显示不同主页面
  • 消息异步

消息异步

异步如何用Redis实现?

使用redis的阻塞队列,每次用户触发一个事件,生产者将会生产一个事件模型,然后序列化放进消息队列中。
而消费者中会开辟一个线程,然后一直在从队列中获取事件,获取不到就阻塞。获取到了之后,通过反序列化,拿到事件模型对象,去config中遍历对应的Handler去处理对应的事件。
Handler定义的是一个接口,声明了处理的逻辑,以及能够处理什么类型的事件。在IOC容器初始化的时候,Consumer就去容器中获取所有的Bean,找到Handler的实现类,
放入config中。后期扩展的时候,如果有新的事件类型要增加,或者新的handler要增加,直接新建一个handler类去实现handler接口,然后标注一个@Component注解,这样
Consumer类又可以注册它,做到了开闭原则。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务