From 4e2d231a7a45ee7f39ca49ffd83c9accb22bca86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Sat, 19 Jan 2019 20:06:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9readme.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 +-- pictures/SCSt-with-binder.png | Bin 0 -> 18899 bytes pictures/spring-cloud-stream.png | Bin 0 -> 13392 bytes spring-cloud/spring-cloud-stream/pom.xml | 72 -------------- .../stream/SpringCloudStreamApplication.java | 14 --- .../heibaiying/stream/bean/Programmer.java | 22 ----- .../stream/controller/MessageController.java | 93 ------------------ .../stream/stream/CustomStream.java | 22 ----- .../stream/stream/StreamReceived.java | 81 --------------- .../src/main/resources/application.yml | 15 --- .../SpringCloudStreamApplicationTests.java | 17 ---- 11 files changed, 6 insertions(+), 342 deletions(-) create mode 100644 pictures/SCSt-with-binder.png create mode 100644 pictures/spring-cloud-stream.png delete mode 100644 spring-cloud/spring-cloud-stream/pom.xml delete mode 100644 spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/SpringCloudStreamApplication.java delete mode 100644 spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/bean/Programmer.java delete mode 100644 spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/controller/MessageController.java delete mode 100644 spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/stream/CustomStream.java delete mode 100644 spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/stream/StreamReceived.java delete mode 100644 spring-cloud/spring-cloud-stream/src/main/resources/application.yml delete mode 100644 spring-cloud/spring-cloud-stream/src/test/java/com/heibaiying/stream/SpringCloudStreamApplicationTests.java diff --git a/README.md b/README.md index 5788d48..6306df4 100644 --- a/README.md +++ b/README.md @@ -68,13 +68,13 @@ spring-cloud:Finchley.SR2 | samples | 描述 | 官方文档 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [spring-cloud-Eureka](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-eureka) | eureka 服务的注册和发现 | [Service Discovery: Eureka Server](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-eureka-server.html) | -| [spring-cloud-Eureka-cluster](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-eureka-cluster) | eureka 高可用集群搭建 | [Service Discovery: Eureka Server](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-eureka-server.html) | -| [spring-cloud-Ribbon](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-ribbon) | ribbon客户端负载均衡 | [Client Side Load Balancer: Ribbon](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-ribbon.html) | -| [spring-cloud-OpenFeign](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-feign) | openfeign 声明式服务调用 | [Declarative REST Client: Feign](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-feign.html) | -| [spring-cloud-Hystrix](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-hystrix) | hystix 服务容错保护
hystrix dashboard 断路器监控
turbine 断路器聚合监控 | [Circuit Breaker: Hystrix Clients](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi__circuit_breaker_hystrix_clients.html)
[Hystrix metrics aggregation with Turbine ](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-consul-turbine.html) | +| [spring-cloud-eureka](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-eureka) | eureka 服务的注册和发现 | [Service Discovery: Eureka Server](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-eureka-server.html) | +| [spring-cloud-eureka-cluster](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-eureka-cluster) | eureka 高可用集群搭建 | [Service Discovery: Eureka Server](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-eureka-server.html) | +| [spring-cloud-ribbon](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-ribbon) | ribbon客户端负载均衡 | [Client Side Load Balancer: Ribbon](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-ribbon.html) | +| [spring-cloud-openFeign](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-feign) | openfeign 声明式服务调用 | [Declarative REST Client: Feign](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-feign.html) | +| [spring-cloud-hystrix](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-hystrix) | hystix 服务容错保护
hystrix dashboard 断路器监控
turbine 断路器聚合监控 | [Circuit Breaker: Hystrix Clients](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi__circuit_breaker_hystrix_clients.html)
[Hystrix metrics aggregation with Turbine ](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-consul-turbine.html) | | [spring-cloud-zuul](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-zuul) | zuul 网关服务 | [Router and Filter: Zuul](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi__router_and_filter_zuul.html) | -| [spring-cloud-sleuth-Zipkin](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-sleuth-zipkin) | sleuth 分布式系统服务追踪 | [Spring Cloud Sleuth](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi__introduction.html#sleuth-adding-project) | +| [spring-cloud-sleuth-zipkin](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-sleuth-zipkin) | sleuth 分布式系统服务追踪 | [Spring Cloud Sleuth](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi__introduction.html#sleuth-adding-project) | | [spring-cloud-config-bus](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-config) | config 分布式配置中心
bus消息总线 实现配置热更新 | [Spring Cloud Config Client](https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi__spring_cloud_config_client.html) | | [spring-cloud-stream](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-cloud/spring-cloud-stream) | stream 对消息服务的抽象整合 | [spring-cloud-stream](http://cloud.spring.io/spring-cloud-stream/single/spring-cloud-stream.html) | diff --git a/pictures/SCSt-with-binder.png b/pictures/SCSt-with-binder.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d66fd5e4f5afe2144bafc99a395d7a13940249 GIT binary patch literal 18899 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°DGR+bsvb*2Ql|1)1Th9#fwhk@@7 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 HhJpVNgIij0 literal 0 HcmV?d00001 diff --git a/spring-cloud/spring-cloud-stream/pom.xml b/spring-cloud/spring-cloud-stream/pom.xml deleted file mode 100644 index 01f606d..0000000 --- a/spring-cloud/spring-cloud-stream/pom.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.0.8.RELEASE - - - com.heibaiying.stream - spring-cloud-stream - 0.0.1-SNAPSHOT - spring-cloud-stream - spring cloud stream project for Spring Boot - - - 1.8 - Finchley.SR2 - - - - - - org.springframework.boot - spring-boot-starter-amqp - - - org.springframework.cloud - spring-cloud-starter-stream-rabbit - - - org.springframework.boot - spring-boot-starter-web - - - - org.projectlombok - lombok - true - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - - org.springframework.cloud - spring-cloud-dependencies - ${spring-cloud.version} - pom - import - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - - diff --git a/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/SpringCloudStreamApplication.java b/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/SpringCloudStreamApplication.java deleted file mode 100644 index 7addbf5..0000000 --- a/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/SpringCloudStreamApplication.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.heibaiying.stream; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class SpringCloudStreamApplication { - - public static void main(String[] args) { - SpringApplication.run(SpringCloudStreamApplication.class, args); - } - -} - diff --git a/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/bean/Programmer.java b/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/bean/Programmer.java deleted file mode 100644 index 892da29..0000000 --- a/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/bean/Programmer.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.heibaiying.stream.bean; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.util.Date; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Programmer implements Serializable { - - private String name; - - private int age; - - private float salary; - - private Date birthday; -} diff --git a/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/controller/MessageController.java b/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/controller/MessageController.java deleted file mode 100644 index 1a4d671..0000000 --- a/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/controller/MessageController.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.heibaiying.stream.controller; - -import com.heibaiying.stream.bean.Programmer; -import com.heibaiying.stream.stream.CustomStream; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.messaging.Message; -import org.springframework.messaging.MessageHeaders; -import org.springframework.messaging.support.MessageBuilder; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - * @author : heibaiying - * @description : 发送测试消息 - */ -@RestController -public class MessageController { - - @Autowired - private CustomStream customStream; - - /*** - * 1、发送简单消息 - */ - @RequestMapping("sendSimpleMessage") - public void sendSimpleMessage() { - customStream.input().send(MessageBuilder.withPayload("hello spring cloud stream").build()); - } - - - /*** - * 2、发送消息体为对象的消息 - */ - @RequestMapping("sendObject") - public void sendObject() { - Programmer programmer=new Programmer("pro",12,212.2f,new Date()); - customStream.input().send(MessageBuilder.withPayload(programmer).build()); - } - - /** - * 3、发送带有消息头的消息 - */ - @RequestMapping("sendWithHeads") - public void sendWithHeads() { - Programmer programmer=new Programmer("pro",12,212.2f,new Date()); - Map map=new HashMap<>(); - map.put("code","868686"); - MessageHeaders messageHeaders=new MessageHeaders(map); - Message message= MessageBuilder.createMessage(programmer,messageHeaders); - customStream.input().send(message); - } - - /** - * 4、条件消息 可以看做是消息路由键的一种实现 - */ - @RequestMapping("sendWithKey") - public void sendWithKey() { - // 创建消息头key 为 01 的消息 - Programmer programmer=new Programmer("key01",12,212.2f,new Date()); - Map map=new HashMap<>(); - map.put("key","01"); - MessageHeaders messageHeaders=new MessageHeaders(map); - Message message= MessageBuilder.createMessage(programmer,messageHeaders); - customStream.input().send(message); - - // 创建消息头key 为 02 的消息 - programmer.setName("key02"); - map.put("key","02"); - MessageHeaders messageHeaders02=new MessageHeaders(map); - Message message02= MessageBuilder.createMessage(programmer,messageHeaders02); - customStream.input().send(message02); - } - - /** - * 5、消息转发 - */ - @RequestMapping("forward") - public void forward(){ - customStream.input().send(MessageBuilder.withPayload("hello spring cloud stream").build()); - } - - /** - * 5、直接往output发消息 - */ - @RequestMapping("toOutPut") - public void toOutPut(){ - customStream.output().send(MessageBuilder.withPayload("direct to output channel").build()); - } -} diff --git a/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/stream/CustomStream.java b/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/stream/CustomStream.java deleted file mode 100644 index 1224468..0000000 --- a/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/stream/CustomStream.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.heibaiying.stream.stream; - -import org.springframework.cloud.stream.annotation.Input; -import org.springframework.cloud.stream.annotation.Output; -import org.springframework.messaging.MessageChannel; -import org.springframework.messaging.SubscribableChannel; - -/** - * @author : heibaiying - */ -public interface CustomStream { - - String INPUT = "customInput"; - String OUTPUT = "customOutput"; - - @Input(CustomStream.INPUT) - SubscribableChannel input(); - - @Output(CustomStream.OUTPUT) - MessageChannel output(); - -} diff --git a/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/stream/StreamReceived.java b/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/stream/StreamReceived.java deleted file mode 100644 index 759f4f4..0000000 --- a/spring-cloud/spring-cloud-stream/src/main/java/com/heibaiying/stream/stream/StreamReceived.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.heibaiying.stream.stream; - -import com.heibaiying.stream.bean.Programmer; -import lombok.extern.slf4j.Slf4j; -import org.springframework.cloud.stream.annotation.EnableBinding; -import org.springframework.cloud.stream.annotation.StreamListener; -import org.springframework.messaging.handler.annotation.Header; -import org.springframework.messaging.handler.annotation.Headers; -import org.springframework.messaging.handler.annotation.Payload; -import org.springframework.messaging.handler.annotation.SendTo; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @author : heibaiying - * @description :消息的监听 - * 注意: 测试这个类的时候需要注释掉不必要的监听,因为对同一个通道存在多个监听,任何一个通道都不能存在返回值(如果有返回值应该指定出站目标) 我们下面的forward消息转发的方法是有返回值的 - * 否则会抛出异常: IllegalArgumentException: If multiple @StreamListener methods are listening to the same binding target, none of them may return a value - */ - -@Component -@EnableBinding(CustomStream.class) -@Slf4j -public class StreamReceived { - - @StreamListener(value = CustomStream.INPUT) - public void simple(Object payload) { - log.info("收到简单消息: {}", payload); - } - - @StreamListener(value = CustomStream.INPUT) - public void object(Programmer programmer) { - log.info("收到对象消息: {}", programmer); - } - - /* - * 用 @Header 监听时候需要注意,指定名称的属性必须在消息头中存在 不然就会抛出异常 MessageHandlingException: Missing header 'XXXX' for method parameter type [class java.lang.String] - */ - @StreamListener(value = CustomStream.INPUT) - public void heads(@Payload Programmer programmer, @Headers Map map, @Header(name = "code") String code) { - log.info("收到对象消息: {}", programmer); - map.forEach((key, value) -> { - log.info("消息头{}的值为{}", key, value); - }); - log.info("绑定指定消息头: code = {}", code); - } - - - /* - * 监听消息头key = 01 的消息 - */ - @StreamListener(target = CustomStream.INPUT, condition = "headers['key']=='01'") - public void key01(@Payload Programmer programmer) { - log.info("key01 监听器接收到消息: {}", programmer.getName()); - } - - /* - * 监听消息头key = 02 的消息 - */ - @StreamListener(target = CustomStream.INPUT, condition = "headers['key']=='01'") - public void key02(@Payload Programmer programmer) { - log.info("key02 监听器接收到消息: {}", programmer.getName()); - } - - /** - * 消息转发 - */ - @StreamListener(target = CustomStream.INPUT) - @SendTo(CustomStream.OUTPUT) - public String forward(String payload){ - log.info("input forward: {}",payload); - return "forward "+payload; - } - - @StreamListener(target = CustomStream.OUTPUT) - public void outSimpleListen(String payload){ - log.info("output 收到简单消息: {}", payload); - } - -} diff --git a/spring-cloud/spring-cloud-stream/src/main/resources/application.yml b/spring-cloud/spring-cloud-stream/src/main/resources/application.yml deleted file mode 100644 index 7858ee9..0000000 --- a/spring-cloud/spring-cloud-stream/src/main/resources/application.yml +++ /dev/null @@ -1,15 +0,0 @@ -spring: - rabbitmq: - host: localhost - port: 5672 - username: guest - password: guest - # 指定消息的分组 默认交换机的类型是topic,发送消息是广播的方式, - # 所有客户端都会受到消息,指定分组后只有一个客户端可以接收到消息 - cloud: - stream: - bindings: - # 和我们在接口中声明消息名称的保持一致 - customInput: - # 分组名称任意填写即可 - group: gro diff --git a/spring-cloud/spring-cloud-stream/src/test/java/com/heibaiying/stream/SpringCloudStreamApplicationTests.java b/spring-cloud/spring-cloud-stream/src/test/java/com/heibaiying/stream/SpringCloudStreamApplicationTests.java deleted file mode 100644 index 2efa878..0000000 --- a/spring-cloud/spring-cloud-stream/src/test/java/com/heibaiying/stream/SpringCloudStreamApplicationTests.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.heibaiying.stream; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class SpringCloudStreamApplicationTests { - - @Test - public void contextLoads() { - } - -} -