520,希望每个人都能去珍惜身边的人,无论是爱人,还是亲人.....。
关于Java多线程,自己在前面记录了创建线程池的两种方式,线程池如何保证核心线程不被销毁,和生产者消费者模式(自己使用Condition和BlockingQueue)。
本来是想去记录锁,以及AQS的相关知识,但是感觉自己理解太过于肤浅,所以好好整理之后再来说明,今天来记录一下毕业设计中中RabbitMQ的使用,这里消息队列使用思路是来源于公司小店铺秒杀模块。
首先关于RabbitMQ的安装不在叙述了。
关于为什么使用消息队列:在实际的项目中,一个订单的完成首先需要前端调用下单的接口,然后将数据存入数据库,而一个下单的请求属于不需要同步返回结果的操作,所以消息队列适用于比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。
这里我的毕业设计中使用Eureka作为注册中心,(⊙v⊙)嗯,为什么不用Zookeeper,因为Zookeeper还需要部署,Eureka就不需要,pom文件引入依赖即可,这是我选择的根本原因。分布式服务的CAP原理我想很多人都有所了解, CAP三者只能取其二,不可兼得,而Eureka是AP原则:高可用和分区容错。Zookeeper是占用CP原则:强一致性(基于Zab协议)和分区容错。(其实就自己而言,目前我还没有机会去了解到真正项目中强一致性和高可用是怎么一回事,即使在自己项目部署的服务器中,往往都是模拟各种情况,对这些理论没有真正意义上的接触,就比如设计模式,自己知道的很多,但是只有单例模式自己用的最熟悉,其他的都是停留在理论上)
好!开始自己毕业设计文章模块使用技术的介绍:
先看一下文章模块的项目目录
这里article是是服务注册方和RabbitMQ中生产者,Eureka是注册中心,feign算是暴露的api接口,util是自己写的基本的类(达成jar放入到其他项目中,省的每次去写很多类),customer就是RabbitMQ中的消费者。下面
首先是Spring Cloud配置Eureka注册中心:
引入依赖:
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.server</groupId>
<artifactId>eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>sprin