springboot综合项目练习十页面发布功能实现

本文介绍了使用SpringBoot实现页面发布的完整流程,包括需求分析、页面发布消费方和生产方的详细步骤。通过RabbitMQ进行消息传递,利用GridFS存储静态化HTML,并根据站点ID路由,确保页面只发布到对应服务器。
摘要由CSDN通过智能技术生成

一. 需求分析
在这里插入图片描述
业务流程如下:
1、管理员进入管理界面点击“页面发布”,前端请求cms页面发布接口。
2、cms页面发布接口执行页面静态化,并将静态化页面(html文件)存储至GridFS中。
3、静态化成功后,向消息队列发送页面发布的消息。
4、消息队列负责将消息发送给各各服务器上部署的Cms Client(Cms客户端)。
在服务器上部署Cms Client(Cms客户端),客户端接收消息队列的通知。
5、每个接收到页面发布消息的Cms Client从GridFS获取Html页面文件,并将Html文件存储在本地服务器。

二. 分析
发布一个页面,需发布到该页面所属的每个站点服务器,其它站点服务器不发布。
比如:发布一个门户的页面,需要发布到每个门户服务器上,而用户中心服务器则不需要发布。
采用routing模式,用站点id作为routingKey,这样就可以匹配页面只发布到所属的站点服务器上。
CmsClient根据页面发布消息的内容请求GridFS获取页面文件,存储在本地服务器。
页面发布流程图如下:
在这里插入图片描述
1、前端请求cms执行页面发布。
2、cms执行静态化程序生成html文件。
3、cms将html文件存储到GridFS中。
4、cms向MQ发送页面发布消息
5、MQ将页面发布消息通知给Cms Client
6、Cms Client从GridFS中下载html文件
7、Cms Client将html保存到所在服务器指定目录

三. 页面发布消费方
作为页面发布消费方,部署到多个服务器上,主要实现的功能是接收页面发布消息,从gridFS下载页面并保存到对应的服务器中.大体流程如下:
1、将cms Client部署在服务器,配置队列名称和站点ID。
2、cms Client连接RabbitMQ并监听各自的“页面发布队列”
3、cms Client接收页面发布队列的消息
4、根据消息中的页面id从mongodb数据库下载页面到本地
其中,消息体内容是页面id,通过页面id,调用 dao查询页面信息,获取到页面的物理路径,调用dao查询站点信息,得到站点的物理路径,从GridFS查询静态文件内容,将静态文件内容保存到页面物理路径下。
代码实现:
1.pom

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring‐boot‐starter‐amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring‐boot‐starter‐data‐mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons‐io</artifactId>
        </dependency>
		<dependency>
            <groupId>com.alibaba</groupId>
 			<artifactId>fastjson</artifactId>
        </dependency>

2.配置文件

server:
  port: 31000
spring:
  application:
    name: xc‐service‐manage‐cms‐client
  data:
    mongodb:
      uri:  mongodb://root:123@localhost:27017
      database: xc_cms
  rabbitmq:
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值