XueChProject06(页面发布)

本文详细介绍了CMS页面发布的流程,包括CMS微服务如何调用静态化程序并存储到GridFS,CmsClient如何接收MQ消息并下载页面到本地服务器。此外,还探讨了发布过程中的问题,如内容错误、多服务器发布及失败处理策略。
摘要由CSDN通过智能技术生成

页面发布流程如下:

在这里插入图片描述
1、CMS Client微服务属于为CMS微服务提供辅助服务的,而只有CMS微服务才是为前端提供接口的。
2、既然CMS Client微服务是提供辅助的,并且将页面下载到CMS Client微服务,但是为前端提供接口的是CMS微服务,那么这个微服务之间是怎么连接这个页面的?答:cms client 是部署在对应站点服务器的,就可以实现静态页面的发布

CMS 微服务 :

1). 调用静态化程序, 执行页面静态化操作, 并且将静态化的文件存储在gridFS 中 ;
2). 往MQ中发送消息 ;

CmsClient :

1). 接收MQ中消息 ;
2). 从gridFS中下载页面到本地服务器 ;

部署结构图如下:

在这里插入图片描述

一、消费者 xc-service-manage-cms-client

监听rabbitmq,接收到消息后,实现从GridFS中下载页面到本地服务器 ;

1、Dao的逻辑

CmsPageRepository
package com.xuecheng.manage_cms_client.dao;

import com.xuecheng.framework.domain.cms.CmsPage;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
   
}

CmsSiteRepository
package com.xuecheng.manage_cms_client.dao;

import com.xuecheng.framework.domain.cms.CmsSite;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface CmsSiteRepository extends MongoRepository<CmsSite,String> {
   
}

2、config中的逻辑

RabbitmqConfig
package com.xuecheng.manage_cms_client.config;


import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitmqConfig {
   
    //队列Bean的名称 queue_cms_postpage
    public static final String QUEUE_CMS_POSTPAGE = "queue_cms_postpage";
    //交换机 ex_routing_cms_postpage
    public static final String EX_ROUTING_CMS_POSTPAGE="ex_routing_cms_postage";

    //队列的名称
    @Value("${xuecheng.mq.queue}")
    public String queue_cms_postpage_name;

    //交换机的名称
    @Value("${xuecheng.mq.routingKey}")
    public String routingKey;
    /**
     *
     * 交换机配置
     * ExchangeBuilder提供了fanout、direct、topic、header交换机类型的配置
     * @return the exchange     
     */
    @Bean(EX_ROUTING_CMS_POSTPAGE)
    public Exchange EXCHANGE_TOPICS_INFORM() {
   
        //durable(true) 持久化,mq重启之后交换机还在
        return ExchangeBuilder.directExchange(EX_ROUTING_CMS_POSTPAGE).durable(true).build();
    }

    //声明队列
    @Bean(QUEUE_CMS_POSTPAGE)
    public Queue QUEUE_CMS_POSTPAGE() {
   
        Queue queue = new Queue(queue_cms_postpage_name);
        return queue;
    }

    //绑定交换机和队列
    @Bean
    public Binding BINDING_QUEUE_INFORM_SMS(@Qualifier(QUEUE_CMS_POSTPAGE) Queue queue, @Qualifier(EX_ROUTING_CMS_POSTPAGE) Exchange exchange) {
   
        return BindingBuilder.bind(queue).to(exchange).with(routingKey).noargs();
    }
}

MongoConfig中逻辑,目的是为了解决GridFSBucket 不能注入的问题
package com.xuecheng.manage_cms_client.config;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值