Websocket应用,分布式定时任务xxl-job

我们在项目里的websocket应用比较多,比如后台管理系统的通知,还有的话就是一些直播场景(互动聊天)需要用到websocket通信,我们一般是通过ajax读取后台数据让页面变成动态的,他无法实现后台主动推送数据给前台,websocket可以,他是把http短链接改成长链接,能实现前后台双向通信,当这个用户登陆成功然后初始化页面的时候会建立websocket链接,后台可以给前台推送消息了;

 

 

前后台对应的方法:onOpen建立链接,onClose关闭链接,onMessage发送消息,onError报错异常,我们在open方法用到了ConcurrentHashMap来保存客户端实例,当发送消息的时候我们拿到这个ConcurrentHashMap找到对应的用户调用这个当前实例的message方法给前端推送消息

消防报警:硬件在发生烟感设备报警的话,我们的MQ会接收到这个消息,消息类型就是火警,会调用websocket发送消息方法,然后让前端有警报,系统也会做相应的通知,由消防人员确认真实性,执行相应的处理措施   

分布式定时任务xxl-job

   实现方式常用的有Quartz,xxl-job,spring task,我们项目都有应用过,一般有一个后台管理界面来管理定时任务,对定时任务进行增删改查,定时任务主要是有这种调度器,执行器,触发器(cron)组成的,我们项目里用xxl-job比较多,分为调度器和执行器,调度中心是一个单独的服务,可以启动多个实例来实现高可用,然后他管理任务(任务的名称,调度算法可以选择轮训,选择第一个或者是最后一个)还有执行器,是嵌入在微服务里边,当微服务启动的时候他会把自己注册到注册中心去,当有任务触发的时候就会调这个执行器,xxl-job的好处是调度中心和执行器分离,减少了定时任务和具体的微服务之间的耦合。

rabbitMQ的延迟队列(死信队列)

    两种方式实现:一种是装插件的方式(聚合支付里边其实是用的插件)还有一种是利用mq的队列queue过期来实现,我们发送消息时的时候是把消息发送给交换机,交换机路由到队列,然后由消费者去消费的,如果一个队列没有消费者,他就是一个死信队列,如果队列设置了过期时间,过期的话就会从队列里删除,如果同时设置了交换机的名称还有路由key,就会转发到正式队列里面,然后被消费。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值