本发明涉及Java程序设计技术领域,尤其涉及一种Java实现存储视频收视率的方法。
背景技术:
在项目研发过程中,遇到这样一个需求。客户想要将用户在机顶盒上观看的直播频道、点播影片等用户行为存储到数据库,包括观看的频道/节目、观看开始时间、观看时长、用户ID、观看类型等。
由于apk已经发行了上线版本,不会去主动调后台接口存储,只能在服务器端想办法存储数据。
开源技术简介:
过滤器:Java过滤器能够对目标资源的请求和响应进行截取,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
消息中间件:消息队列(MQ)是一种应用程序对应用程序的通信方法。消息传递指的是程序之间通过在消息中发送数据进行通信。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
Mongo数据库:MongoDB是一个基于分布式文件存储的数据库。它支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。
如果通过以上开源技术解决现有问题倒是一个非常合适的选择。
技术实现要素:
为了解决以上技术问题,本发明提出了一种Java实现存储视频收视率的方法,涵盖Java过滤器、Apache activemq消息队列、收视率数据存储等功能。
本发明的技术方案是:
一种Java实现存储视频收视率的方法,通过Java过滤器、消息中间件、数据库连接工具等,实现请求数据拦截、队列消息发送及接收、数据解析等功能,进而将整理后的收视率数据存储到数据库中。
进一步的,
通过Java过滤器拦截机顶盒请求的视频源url,然后解析url得到用户ID、节目ID、观看时间、观看类型等信息,再通过重定向将真实的视频源url返给机顶盒。
为了避免存储收视率数据耗时影响用户观看体验,进而引入消息中间件,用于队列消息的发送及接收,将存储数据这样相对耗时的工作放在后台执行,用mongo数据库存储数据。
主要操作步骤如下:
1、使用Java编写过滤器函数。该函数可实现拦截机顶盒请求的视频源url,并重定向到正确的视频源url。
2、使用Java编写数据解析函数。该函数可实现解析步骤1拦截到的url,得到用户ID、节目ID、观看时间、观看类型等信息,并拼装成实体类。
3、使用Java编写数据存储函数。该函数用于将步骤2拼装好的实体类按指定格式存储到mongo数据库中。
4、整合Apache activemq消息中间件,定义消息发送者和消息消费者,消息发送者用于将步骤2中拼装后的实体类发送到消息队列,消息消费者负责将接收到的数据消息使用步骤3的方法存储。
附图说明
图1是本发明的工作流程示意图。
具体实施方式
下面对本发明的内容进行更加详细的阐述:
本发明主要操作步骤如下:
1、使用Java编写过滤器函数。该函数可实现拦截机顶盒请求的视频源url,并重定向到正确的视频源url。
2、使用Java编写数据解析函数。该函数可实现解析步骤1拦截到的url,得到用户ID、节目ID、观看时间、观看类型等信息,并拼装成实体类。
3、使用Java编写数据存储函数。该函数用于将步骤2拼装好的实体类按指定格式存储到mongo数据库中。
4、整合Apache activemq消息中间件,定义消息发送者和消息消费者,消息发送者用于将步骤2中拼装后的实体类发送到消息队列,消息消费者负责将接收到的数据消息使用步骤3的方法存储。
具体代码实现:
1、过滤器
2、数据解析函数
3、数据存储函数
4、消息发送者
5、消息消费者
以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。