Java的新项目学成在线笔记-day6(一)

1 页面发布 1.1 技术方案 本项目使用MQ实现页面发布的技术方案如下:
Java的新项目学成在线笔记-day6(一)
技术方案说明:
1、平台包括多个站点,页面归属不同的站点。
2、发布一个页面应将该页面发布到所属站点的服务器上。
3、每个站点服务部署cms client程序,并与交换机绑定,绑定时指定站点Id为routingKey。 指定站点id为routingKey就可以实现cms client只能接收到所属站点的页面发布消息。
4、页面发布程序向MQ发布消息时指定页面所属站点Id为routingKey,将该页面发布到它所在服务器上的cms client。
路由模式分析如下:
发布一个页面,需发布到该页面所属的每个站点服务器,其它站点服务器不发布。
比如:发布一个门户的页面,需要发布到每个门户服务器上,而用户中心服务器则不需要发布。
所以本项目采用routing模式,用站点id作为routingKey,这样就可以匹配页面只发布到所属的站点服务器上。

页面发布流程图如下:
Java的新项目学成在线笔记-day6(一)

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保存到所在服务器指定目录

1.2 页面发布消费方 1.2.1需求分析
功能分析:
创建Cms Client工程作为页面发布消费方,将Cms Client部署在多个服务器上,它负责接收到页面发布 的消息后从 GridFS中下载文件在本地保存。
需求如下:
1、将cms Client部署在服务器,配置队列名称和站点ID。
2、cms Client连接RabbitMQ并监听各自的“页面发布队列”
3、cms Client接收页面发布队列的消息
4、根据消息中的页面id从mongodb数据库下载页面到本地

调用dao查询页面信息,获取到页面的物理路径,调用dao查询站点信息,得到站点的物理路径 页面物理路径=站点物理路径+页面物理路径+页面名称。
从GridFS查询静态文件内容,将静态文件内容保存到页面物理路径下。

1.2.2创建Cms Client工程
1、创建maven工程
pom.xml

<?xml version="1.0" encoding="UTF‐8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"     
    xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance" 
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 [url]http://maven.apache.org/xsd/maven[/url]‐4.0.0.xsd">
     <parent>    
    <artifactId>xc‐framework‐parent</artifactId>  
      <groupId>com.xuecheng</groupId> 
       <version>1.0‐SNAPSHOT</version> 
       <relativePath>../xc‐framework‐parent/pom.xml</relativePath>
    </parent>   
 <modelVersion>4.0.0</modelVersion>
      <artifactId>xc‐service‐manage‐cms‐client</artifactId>
      <dependencies>    
    <dependency>      
      <groupId>com.xuecheng</groupId>     
       <artifactId>xc‐framework‐model</artifactId>   
         <version>1.0‐SNAPSHOT</version>     
   </dependency>    
    <dependency>    
        <groupId>org.springframework.boot</groupId>   
         <artifactId>spring‐boot‐starter‐test</artifactId>  
          <scope>test</scope> 
       </dependency>      
  <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>   
</dependencies>
  </project>

2、配置文件 在resources下配置application.yml和logback-spring.xml。 application.yml的内容如下:

server: 
 port: 31000 spring: 
 application:
    name: xc‐service‐manage‐cms‐client 
  data:   
 mongodb: 
     uri:  mongodb://root:123@localhost:27017 
     database: xc_cms   rabbitmq:  
  host: 127.0.0.1 
   port: 5672 
   username: guest   
  password: guest  
   virtualHost: / xuecheng:
  mq:   #cms客户端监控的队列名称(不同的客户端监控的队列不能重复) 
    queue: queue_cms_postpage_01  
  routingKey: 5a751fab6abb5044e0d19ea1 #此routingKey为门户站点ID

说明:在配置文件中配置队列的名称,每个 cms client在部署时注意队列名称不要重复
3、启动类


@SpringBootApplication 
@EntityScan("com.xuecheng.framework.domain.cms")//扫描实体类 @ComponentScan(basePackages={"com.xuecheng.framework"})//扫描common下的所有类 @ComponentScan(basePackages={"com.xuecheng.manage_cms_client"}) public class ManageCmsClientApplication {  
  public static void main(String[] args) {  
      SpringApplication.run(ManageCmsClientApplication.class, args);  
   }  
}

转载于:https://blog.51cto.com/13517854/2340987

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值