阶段5 3.微服务项目【学成在线】_day06 页面发布 课程管理_05-页面发布-生产方cms-发送页面发布消息
1.3 页面发布生产方
1.3.1 需求分析
管理员通过 cms系统发布“页面发布”的消费,cms系统作为页面发布的生产方。
需求如下:
1、管理员进入管理界面点击“页面发布”,前端请求cms页面发布接口。
2、cms页面发布接口执行页面静态化,并将静态化页面存储至GridFS中。
3、静态化成功后,向消息队列发送页面发布的消息。
1) 获取页面的信息及页面所属站点ID。
2) 设置消息内容为页面ID。(采用json格式,方便日后扩展)
3) 发送消息给ex_cms_postpage交换机,并将站点ID作为routingKey。
页面发布的生产方就是红圈 圈出来的这一部分
cms工程写代码
cms就是页面发布的生产方,所以在cms的工程上写代码
首先在cms工程配置文件内配置消息队列的信息
添加依赖
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐amqp</artifactId>
rabbitMQConfig配置文件
直接从cms-client的工程内把这个配置文件拷贝过来。
cms是消息的生产方,它会把消息发送给交换机。交换机转发给哪个队列,生产方并不知道。
所以生产方面对不确定的队列数,无法配置对列。所以在生产方顶多也就是创建交换机
配置交换机的目的是生产方启动了监听如果没有交换机就去创建交换机。
api接口
现在要写一个对外暴露页面发布的接口。
写service代码
保存静态页的方法
听过gridFsTemplate保存到gridFS中
使用gridFsTemplate的store方法,需要参数InputStream和fileName这两个参数
所有我们需要定义输入流。使用IOUtils的toInputStream这个方法,指定编码类型是utf-8
得到页面对象,判断页面对象是否为空
把获取到的文件的ObjectId重新保存到cmsPage这个对象里面
发送消息
注入rabbitTemplate
主方法内调用
controller