菜鸟学渣接触spring cloud 系列...
公司也上微服务了,再不学习下就凉了,所以来踩坑吧...
版本:
spring-boot: 2.0
spring-cloud: Finchley.SR1
已有项目:
[eureka-server] # 注册中心 port 8761
[eureka-client-one] # 微服务1 port 8501
[eureka-client-two] # 微服务2 port 8502
[eureka-client-turbine] # 断路监控 port 8503
[eureka-client-zuul] # 网关服务 port 8601
[eureka-client-sleuth] # 链路追踪 port 8602
能上图绝不BB:
spring-cloud-stream 支持RabbitMQ、Kafka 组件的消息系统,这里选RabbitMQ
大致这样理解: 微服务ABCD(吃货)不断发(要吃披萨的)消息到RabbitMQ(饿了吗),微服务F(卖披萨的)一直监听着RabbitMQ,收到ABCD的消息后,立马打包披萨送到ABCD家里,地址从消息里来的。
零、 安装RabbitMQ-server端
这里使用stream-rabbitmq基于rabbitMQ实现,需要先在电脑安装RabbitMQ-server
1. 安装erlang 语言环境
2. 安装RabbitMQ-server
3. 启用plugin
一、stream 消息产生和接收
这里就把产生和接收放到一个微服务里面了,不分开写了
新建 [eureka-client-stream]
引入依赖 spring-cloud-stream、spring-cloud-starter-stream-rabbit
<?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.renzku</groupId> <artifactId>eureka-client-stream</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eureka-client-stream</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId> <!-- or '*-stream-kafka' --> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-test-support</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>