Springboot+Dplayer+RabbitMQ实现视频弹幕延时入库
编写之初,在网上找了很多关于springboot整合dplayer实现弹幕的方式,发现案例很少,然后自己就着手写一个小项目,分享给大家~
注:Dplayer版本:v1.22.2
流程:前端自定义弹幕发送与获取方式 =》后端进行接收,格式转化,入队(延时队列),散列入库时间,减少服务器压力
话不多说,先看效果图:

代码示例:
我使用的是前后端分离的方式,下列分别展示前端和后端的代码:
1、前端dplayer参数:
这里只展示了options里面的自定义弹幕参数和弹幕配置参数,其它的参数配置请看dplayer的官网http://dplayer.js.org/guide.html#quick-start
apiBackend里面是自定义弹幕的接收和发送方式,如果没有配置这个apiBackend,则必须在danmaku里面需要加上api参数来指定获取和发送弹幕的路径
注:执行callback函数时会把获取的数据设置到视频弹幕列表里面,执行cb函数时(发送弹幕),会把发送弹幕的对话框关闭掉

让我们来看看前端接收弹幕时获取的数据格式把:起初我以为第三列字段是颜色的十六进制(也就是要把#fff转为16.....),但后来发现就是默认的发送时的颜色数据#xxx而已,并不需要转换!
需要转换的仅仅只有弹幕类型type,下面会介绍,我们继续往下看~

再来看看后端是如何获取弹幕列表进行格式转化的:
根据视频id去数据库查弹幕列表最多2000条,然后利用parseDanmakuListToArray方法把数据库弹幕列表转成Object类型的数组
参数字段顺序分别是:时间、类型(0、1、2)、颜色#xxx、作者、内容

因为我数据库的弹幕类型存的是top、bottom这种类型的,在转化的时候就要用到另一个方法把类型转一下:

再来看看弹幕实体类:
起初我有加上颜色十进制colorTen这个字段,因为网上都是把颜色转为十进制的,但是我发现我的版本用这样的方式颜色无效,所以我就使用#xxx的方式,这里我保留了颜色十进制这个字段,也可以去掉这个字段。

这样就完成了弹幕的获取和展示拉,接下来再来看看怎么实现弹幕延时入库的:
前端发送弹幕的数据:
后端接口代码:后端以Map方式接收弹幕参数,然后设置到弹幕实体类对象中,校验调用者的token(没有的可以忽略),然后再调用延时队列弹幕入队(调用完后台等待一定时间(1小时的随机时间,毫秒)消费者会去消费这条弹幕并把它插入数据库中),最后返回

来看看RabbitMq的配置信息:
注意,rabbitmq需要下载插件rabbitmq_delayed_message_exchange,配置后重启mq才能实现延时队列的功能
插件地址:https://www.rabbitmq.com/community-plugins.html
请下载与自己mq版本对应的插件!!
下载后就是一个这样的文件

把这个插件放到mq服务的插件目录下,比如我的是在/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.5/plugins/
然后在/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.5/sbin中执行rabbitmq-plugins enable rabbitmq_delayed_message_exchange启用插件
最后重启RabbitMq就可以了rabbitmq-server restart

接下来我们编写消息发送者的类:

消息消费者类(消费弹幕参数,插入数据库):

发送一条弹幕后,查看后台延时入库日志:

到这里就完成了弹幕的延时插入还有展示的功能了,感谢观看~o(* ̄▽ ̄*)ブ
Springboot+Dplayer+RabbitMQ实现视频弹幕延时入库的更多相关文章
- springboot使用RabbitMQ实现延时任务
延时队列顾名思义,即放置在该队列里面的消息是不需要立即消费的,而是等待一段时间之后取出消费.那么,为什么需要延迟消费呢?我们来看以下的场景 订单业务: 在电商/点餐中,都有下单后 30 分钟内没有付款 ...
- SpringBoot集成RabbitMQ
官方说明:http://www.rabbitmq.com/getstarted.html 什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.MQ ...
- SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合消息服务 2.具体内容 对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ...
- python 爬取B站视频弹幕信息
获取B站视频弹幕,相对来说很简单,需要用到的知识点有requests.re两个库.requests用来获得网页信息,re正则匹配获取你需要的信息,当然还有其他的方法,例如Xpath.进入你所观看的视频 ...
- SpringBoot集成rabbitmq(二)
前言 在使用rabbitmq时,我们可以通过消息持久化来解决服务器因异常崩溃而造成的消息丢失.除此之外,我们还会遇到一个问题,当消息生产者发消息发送出去后,消息到底有没有正确到达服务器呢?如果不进行特 ...
- SpringBoot之RabbitMQ的使用
一 .RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件,消息中间件的工作过程可以用生产者消费者模型来表示.即,生产者不断的向消息队列发 ...
- SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门
1.RabbitMQ介绍 RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗.Rabbi ...
- Spring-boot之 rabbitmq
今天学习了下spring-boot接入rabbitmq. windows下的安装:https://www.cnblogs.com/ericli-ericli/p/5902270.html 使用博客:h ...
- springboot学习笔记-6 springboot整合RabbitMQ
一 RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿 ...
随机推荐
- llinux下mysql建库、新建用户、用户授权、修改用户密码
1.创建新的数据库 1.1.root用户登录mysql mysql -u root -p 1.2.查看现有数据库 show databases; 1.3.新建数据库,此命名为cjc create ...
- 7.httpie
可以使用curl或httpie测试我们的服务器.Httpie是用Python编写的用户友好的http客户端 安装:pip3 install httpie #get请求示例 输入命令:http ht ...
- Jquery对类的操作
Jquery对类的基本操作 $("#Div_BillSon div").on('click', function (e) { $("#Div_BillSon") ...
- 二、.Net Core搭建Ocelot
上一篇文章介绍了Ocelot的基本概念:https://www.cnblogs.com/yangleiyu/p/15043762.html 本文介绍在.net core中如何使用ocelot. Oce ...
- Scrapy 之 docker splash
Scrapy 之 docker splash 1. ubuntu 安装docker 命令 curl -sSL https://get.daocloud.io/docker | sh 或者 curl - ...
- chrome工具调试
项目调试的困境 程序开发总会遇到各种各样的问题,为什么实际结果和预期结果不一致? 这个时候如果能深入程序内部抽丝剥茧去一探究竟再好不过! 而chrome工具是前端开发的杀手锏,经常听到的一句话是: 出 ...
- CSS布局秘籍(2)-6脉神剑
HTML系列: 人人都懂的HTML基础知识-HTML教程(1) HTML元素大全(1) HTML元素大全(2)-表单 CSS系列: CSS基础知识筑基 常用CSS样式属性 CSS选择器大全48式 CS ...
- jvm之垃圾收集一之垃圾回收算法
最近又重新在读深入理解java虚拟机一书,吸取第一次读完到现在已经忘记的差不都的教训,这次的学习之旅想通过博客的形式记录下自己的所学所感,以备后续继续学习备忘所用!这次先记录下垃圾收集相关知识点: 垃 ...
- AR路由器如何配置Portal认证(二层网络)
规格 适用于所有版本.所有形态的AR路由器. 说明: 4GE-2S.4ES2G-S.4ES2GP-S和9ES2单板不支持NAC功能. 组网需求 如图所示,某公司接待室需要部署一套身份认证系统,对接入网 ...
- vivo霍金实验平台设计与实践-平台产品系列02
vivo 互联网平台产品研发团队 - Bao Dawei 本篇介绍了vivo霍金实验平台的系统架构以及业务发展过程中遇到的问题以及对应的解决方案. <平台产品>系列文章: 1.vivo平台 ...
