Skip to content

Commit

Permalink
Spring Cloud Stream如何消费自己生产的消息
Browse files Browse the repository at this point in the history
  • Loading branch information
dyc87112 committed Nov 17, 2018
1 parent f4c224d commit ee59bc4
Show file tree
Hide file tree
Showing 15 changed files with 420 additions and 0 deletions.
1 change: 1 addition & 0 deletions 2-Dalston版教程示例/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
<!--使用spring cloud stream-->
<module>stream-hello</module>
<module>stream-consumer-group</module> <!-- 负载均衡消费 -->
<module>stream-consumer-self</module> <!-- 消费自己的消息 -->

<!--分布式跟踪-->
<module>trace-1</module>
Expand Down
62 changes: 62 additions & 0 deletions 2-Dalston版教程示例/stream-consumer-self/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?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.didispace</groupId>
<artifactId>stream-consumer-self</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.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>
</properties>

<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
</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-starter-stream-rabbit</artifactId>
</dependency>
</dependencies>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR4</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>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.didispace.stream;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;


@EnableBinding(TestTopic.class)
@SpringBootApplication
public class TestApplication {

public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.didispace.stream;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class TestController {

@Autowired
private TestTopic testTopic;

@GetMapping("/sendMessage")
public String messageWithMQ(@RequestParam String message) {
testTopic.output().send(MessageBuilder.withPayload(message).build());
return "ok";
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.didispace.stream;

import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class TestListener {

@StreamListener(TestTopic.INPUT)
public void receive(String payload) {
log.info("Received: " + payload);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.didispace.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;

public interface TestTopic {

String OUTPUT = "example-topic";
String INPUT = "example-topic";

@Output(OUTPUT)
MessageChannel output();

@Input(INPUT)
SubscribableChannel input();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
spring.application.name=stream-consumer-self
server.port=8080

119 changes: 119 additions & 0 deletions 4-Finchley/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# Spring Cloud教程

本项目内容为Spring Cloud教程的程序样例。如您觉得该项目对您有用,欢迎点击右上方的**Star**按钮,给予支持!!

- 我的博客:http://blog.didispace.com
- **我的小密圈(深度交流与问答):https://t.xiaomiquan.com/zfEiY3v**
- GitHub:https://github.com/dyc87112/SpringCloud-Learning
- Gitee:https://gitee.com/didispace/SpringCloud-Learning
- Spring For All社区:http://www.spring4all.com/
- Spring Boot基础教程:http://blog.didispace.com/Spring-Boot%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/
- Spring Cloud基础教程:http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/
- **公益调试Eureka:http://eureka.didispace.com**

**优惠云服务推荐**

- [腾讯云:3年时长最低265元/年](https://cloud.tencent.com/redirect.php?redirect=1005&cps_key=f6a8af1297bfac40b9d10ffa1270029a)
- [阿里云:ECS云服务器2折起](https://s.click.taobao.com/t?e=m%3D2%26s%3Dzj4kbQ5lKukcQipKwQzePCperVdZeJviEViQ0P1Vf2kguMN8XjClAq9GNeKfy2AD4SaRmc4YmqYCxNLxWxqxDPY8Eqzf%2BUWbOTauL6DcROffvu81lbXO1DDVuRn8ddiDsEVVC24eqozO54LQ%2FVw1L9X5LHh3Z8M%2BWS6ALZVeqlk9XUfbPSJC%2F06deTzTIbffYpyF7ku%2BxKgGargQjSAC4C6cUF%2FXAmem)

## 教程列表

### 《Spring Cloud构建微服务架构》系列博文

#### Finchley版

- [Spring Cloud Stream如何消费自己生产的消息](http://blog.didispace.com/spring-cloud-starter-finchley-7-1)

#### Edgware版

> 本系列主要是对Dalston版的补充,包含Edgware版的主要新增或变动的内容,对于Spring Cloud的基础使用依然建议参考Dalston版教程
- [分布式配置中心(数据库存储)](http://blog.didispace.com/spring-cloud-starter-edgware-3-1)

#### Dalston版

- [服务注册与发现(Eureka、Consul)](http://blog.didispace.com/spring-cloud-starter-dalston-1/)
- [服务消费者(基础)](http://blog.didispace.com/spring-cloud-starter-dalston-2-1/)
- [服务消费者(Ribbon)](http://blog.didispace.com/spring-cloud-starter-dalston-2-2/)
- [服务消费者(Feign)](http://blog.didispace.com/spring-cloud-starter-dalston-2-3/)
- [服务消费者(Feign)传文件](http://blog.didispace.com/spring-cloud-starter-dalston-2-4/)
- [分布式配置中心](http://blog.didispace.com/spring-cloud-starter-dalston-3)
- [服务容错保护(Hystrix服务降级)](http://blog.didispace.com/spring-cloud-starter-dalston-4-1)
- [服务容错保护(Hystrix依赖隔离)](http://blog.didispace.com/spring-cloud-starter-dalston-4-2)
- [服务容错保护(Hystrix断路器)](http://blog.didispace.com/spring-cloud-starter-dalston-4-3)
- [Hystrix监控面板](http://blog.didispace.com/spring-cloud-starter-dalston-5-1/)
- [Hystrix监控数据聚合](http://blog.didispace.com/spring-cloud-starter-dalston-5-2/)
- [服务网关(基础)](http://blog.didispace.com/spring-cloud-starter-dalston-6-1/)
- [服务网关(路由配置)](http://blog.didispace.com/spring-cloud-starter-dalston-6-2/)
- [服务网关(过滤器)](http://blog.didispace.com/spring-cloud-starter-dalston-6-3/)
- [服务网关(API文档汇总)](http://blog.didispace.com/Spring-Cloud-Zuul-use-Swagger-API-doc/)
- [消息驱动的微服务(入门)](http://blog.didispace.com/spring-cloud-starter-dalston-7-1/)
- [消息驱动的微服务(核心概念)](http://blog.didispace.com/spring-cloud-starter-dalston-7-2/)
- [消息驱动的微服务(消费组)](http://blog.didispace.com/spring-cloud-starter-dalston-7-3/)
- [消息驱动的微服务(消费组案例:解决消息重复消费)](http://blog.didispace.com/spring-cloud-starter-dalston-7-5/)
- [消息驱动的微服务(消息分区)](http://blog.didispace.com/spring-cloud-starter-dalston-7-4/)
- [分布式服务跟踪(入门)](http://blog.didispace.com/spring-cloud-starter-dalston-8-1/)
- [分布式服务跟踪(跟踪原理)](http://blog.didispace.com/spring-cloud-starter-dalston-8-2/)
- [分布式服务跟踪(整合logstash)](http://blog.didispace.com/spring-cloud-starter-dalston-8-3/)
- [分布式服务跟踪(整合zipkin)](http://blog.didispace.com/spring-cloud-starter-dalston-8-4/)
- [分布式服务跟踪(收集原理)](http://blog.didispace.com/spring-cloud-starter-dalston-8-5/)
- [分布式服务跟踪(抽样收集)](http://blog.didispace.com/spring-cloud-starter-dalston-8-6/)

#### Brixton版

- 1-Brixton版教程示例/chapter1-1-1:[Spring Cloud构建微服务架构(一)服务注册与发现](http://blog.didispace.com/springcloud1/)
- 1-Brixton版教程示例/chapter1-1-2:[Spring Cloud构建微服务架构(二)服务消费者](http://blog.didispace.com/springcloud2/)
- 1-Brixton版教程示例/chapter1-1-3:[Spring Cloud构建微服务架构(三)断路器](http://blog.didispace.com/springcloud3/)
- 1-Brixton版教程示例/chapter1-1-4:[Spring Cloud构建微服务架构(四)分布式配置中心](http://blog.didispace.com/springcloud4/)
- 1-Brixton版教程示例/chapter1-1-8:[Spring Cloud构建微服务架构(四)分布式配置中心(续)](http://blog.didispace.com/springcloud4-2/)
- 1-Brixton版教程示例/chapter1-1-5:[Spring Cloud构建微服务架构(五)服务网关](http://blog.didispace.com/springcloud5/)
- 1-Brixton版教程示例/chapter1-1-6:[Spring Cloud构建微服务架构(六)高可用服务注册中心](http://blog.didispace.com/springcloud6/)
- 1-Brixton版教程示例/chapter1-1-7:[Spring Cloud构建微服务架构(七)消息总线(Rabbit)](http://blog.didispace.com/springcloud7/)
- 1-Brixton版教程示例/chapter1-1-7:[Spring Cloud构建微服务架构(七)消息总线(Kafka)](http://blog.didispace.com/springcloud7-2/)

### 《Spring Cloud源码分析》系列博文

- [Spring Cloud源码分析(一)Eureka](http://blog.didispace.com/springcloud-sourcecode-eureka/)
- [Spring Cloud源码分析(二)Ribbon](http://blog.didispace.com/springcloud-sourcecode-ribbon/)
- [Spring Cloud源码分析(二)Ribbon](http://blog.didispace.com/springcloud-sourcecode-ribbon/)
- [Spring Cloud源码分析(四)Zuul:核心过滤器](http://blog.didispace.com/spring-cloud-source-zuul/)
- 未完待续

### 《Spring Cloud实战小贴士》系列博文

- [Spring Cloud实战小贴士:版本依赖关系](http://blog.didispace.com/spring-cloud-tips-1/)
- [Spring Cloud实战小贴士:随机端口](http://blog.didispace.com/spring-cloud-tips-2/)
- [Spring Cloud实战小贴士:健康检查](http://blog.didispace.com/spring-cloud-tips-3/)
- [Spring Cloud实战小贴士:Zuul处理Cookie和重定向](http://blog.didispace.com/spring-cloud-zuul-cookie-redirect/)
- [Spring Cloud实战小贴士:Zuul统一异常处理(一)](http://blog.didispace.com/spring-cloud-zuul-exception/)
- [Spring Cloud实战小贴士:Zuul统一异常处理(二)](http://blog.didispace.com/spring-cloud-zuul-exception-2/)
- [Spring Cloud实战小贴士:Zuul统一异常处理(三)【Dalston版】](http://blog.didispace.com/spring-cloud-zuul-exception-3/)
- [Spring Cloud实战小贴士:Turbine如何聚合设置了context-path的Hystrix数据](http://blog.didispace.com/spring-cloud-tips-4/)
- [Spring Cloud实战小贴士:Feign的继承特性(伪RPC模式)](http://blog.didispace.com/spring-cloud-tips-feign-rpc/)
- [Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式](http://blog.didispace.com/spring-cloud-tips-ribbon-eager/)
- [Spring Cloud实战小贴士:Zuul的饥饿加载(eager-load)使用](http://blog.didispace.com/spring-cloud-tips-zuul-eager/)

#### 其他文章

- [使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程](http://blog.didispace.com/spring-initializr-in-intellij/)
- [为Spring Cloud Ribbon配置请求重试(Camden.SR2+)](http://blog.didispace.com/spring-cloud-ribbon-failed-retry/)
- [Consul注销实例时候的问题](http://blog.didispace.com/consul-deregister/)
- [使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控](http://blog.didispace.com/spring-boot-jolokia-grafana-monitor/)
- [Netflix Zuul与Nginx的性能对比](http://blog.didispace.com/zuul-vs-nginx-performance/)
- [基于Consul的分布式锁实现](http://blog.didispace.com/spring-cloud-consul-lock-and-semphore/)
- [基于Consul的分布式信号量实现](http://blog.didispace.com/spring-cloud-consul-lock-and-semphore-2/)

## 我的公众号

![](http://git.oschina.net/uploads/images/2017/0105/082137_85109d07_437188.jpeg "在这里输入图片标题")

## 推荐我的书

![](https://git.oschina.net/uploads/images/2017/0416/233656_dd3bce94_437188.png "在这里输入图片标题")

## 其他推荐

- [Spring Boot基础教程](http://blog.didispace.com/Spring-Boot%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/)
- [Spring Boot 2.0新特性](http://blog.didispace.com/Spring-Boot-2-0-feature/)
- [Spring Cloud基础教程](http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/)
- [微服务架构专题](http://blog.didispace.com/micro-serivces-arch/)
16 changes: 16 additions & 0 deletions 4-Finchley/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?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.didispace</groupId>
<artifactId>spring-cloud-finchley</artifactId>
<packaging>pom</packaging>
<version>1.0</version>

<modules>
<module>stream-consumer-self</module> <!-- 消费自己的消息 -->

</modules>

</project>
66 changes: 66 additions & 0 deletions 4-Finchley/stream-consumer-self/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?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.didispace</groupId>
<artifactId>stream-consumer-self</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.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>
</properties>

<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
</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-starter-stream-rabbit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</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>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.didispace.stream;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;


@EnableBinding(TestTopic.class)
@SpringBootApplication
public class TestApplication {

public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}

}
Loading

0 comments on commit ee59bc4

Please sign in to comment.