Skip to content

Commit 872d838

Browse files
committed
消息重复消息问题解决:消费组
1 parent 925fb76 commit 872d838

File tree

8 files changed

+148
-2
lines changed

8 files changed

+148
-2
lines changed

2-Dalston版教程示例/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@
3838
- [消息驱动的微服务(入门)](http://blog.didispace.com/spring-cloud-starter-dalston-7-1/)
3939
- [消息驱动的微服务(核心概念)](http://blog.didispace.com/spring-cloud-starter-dalston-7-2/)
4040
- [消息驱动的微服务(消费组)](http://blog.didispace.com/spring-cloud-starter-dalston-7-3/)
41+
- [消息驱动的微服务(消费组案例:解决消息重复消费)](http://blog.didispace.com/spring-cloud-starter-dalston-7-5/)
4142
- [消息驱动的微服务(消息分区)](http://blog.didispace.com/spring-cloud-starter-dalston-7-4/)
4243
- [分布式服务跟踪(入门)](http://blog.didispace.com/spring-cloud-starter-dalston-8-1/)
4344
- [分布式服务跟踪(跟踪原理)](http://blog.didispace.com/spring-cloud-starter-dalston-8-2/)
4445
- [分布式服务跟踪(整合logstash)](http://blog.didispace.com/spring-cloud-starter-dalston-8-3/)
4546
- [分布式服务跟踪(整合zipkin)](http://blog.didispace.com/spring-cloud-starter-dalston-8-4/)
4647
- [分布式服务跟踪(收集原理)](http://blog.didispace.com/spring-cloud-starter-dalston-8-5/)
4748
- [分布式服务跟踪(抽样收集)](http://blog.didispace.com/spring-cloud-starter-dalston-8-6/)
48-
- [Spring Cloud构建微服务架构:服务综合管理]
4949

5050
## 我的公众号
5151

2-Dalston版教程示例/pom.xml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,37 +17,45 @@
1717
<module>eureka-consumer</module>
1818
<module>consul-consumer</module>
1919

20+
<!--使用ribbon和feign调用服务接口-->
2021
<module>eureka-consumer-ribbon</module>
2122
<module>eureka-consumer-feign</module>
2223

24+
<!--分布式配置中心-->
2325
<module>config-server-git</module>
2426
<module>config-client</module>
2527

28+
<!--使用hystrix-->
2629
<module>eureka-consumer-ribbon-hystrix</module>
2730
<module>eureka-consumer-feign-hystrix</module>
2831

2932
<module>hystrix-dashboard</module>
3033
<module>turbine</module>
3134
<module>turbine-amqp</module>
3235

36+
<!--使用feign-->
3337
<module>eureka-feign-api</module>
3438
<module>eureka-feign-client</module>
3539
<module>eureka-feign-consumer</module>
40+
<!--使用feign上传文件-->
3641
<module>eureka-feign-upload-client</module>
3742
<module>eureka-feign-upload-server</module>
3843

44+
<!--hystrix请求合并-->
3945
<module>hystrix-collapser-provider</module>
4046
<module>hystrix-collapser-consumer</module>
4147

48+
<!--api网关-->
4249
<module>api-gateway</module>
4350
<module>api-gateway-with-eureka</module>
4451

52+
<!--使用spring cloud stream-->
4553
<module>stream-hello</module>
54+
<module>stream-consumer-group</module> <!-- 负载均衡消费 -->
4655

4756
<!--分布式跟踪-->
4857
<module>trace-1</module>
4958
<module>trace-2</module>
50-
5159
<module>zipkin-server</module>
5260
<module>zipkin-server-stream</module>
5361

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<groupId>com.didispace</groupId>
7+
<artifactId>stream-consumer-group</artifactId>
8+
<version>0.0.1-SNAPSHOT</version>
9+
<packaging>jar</packaging>
10+
11+
<parent>
12+
<groupId>org.springframework.boot</groupId>
13+
<artifactId>spring-boot-starter-parent</artifactId>
14+
<version>1.5.9.RELEASE</version>
15+
<relativePath/> <!-- lookup parent from repository -->
16+
</parent>
17+
18+
<properties>
19+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
20+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
21+
<java.version>1.8</java.version>
22+
</properties>
23+
24+
<dependencies>
25+
<dependency>
26+
<groupId>org.springframework.boot</groupId>
27+
<artifactId>spring-boot-starter-test</artifactId>
28+
<scope>test</scope>
29+
</dependency>
30+
31+
<dependency>
32+
<groupId>org.springframework.cloud</groupId>
33+
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
34+
</dependency>
35+
</dependencies>
36+
37+
<dependencyManagement>
38+
<dependencies>
39+
<dependency>
40+
<groupId>org.springframework.cloud</groupId>
41+
<artifactId>spring-cloud-dependencies</artifactId>
42+
<version>Dalston.SR4</version>
43+
<type>pom</type>
44+
<scope>import</scope>
45+
</dependency>
46+
</dependencies>
47+
</dependencyManagement>
48+
49+
<build>
50+
<plugins>
51+
<plugin>
52+
<groupId>org.springframework.boot</groupId>
53+
<artifactId>spring-boot-maven-plugin</artifactId>
54+
</plugin>
55+
</plugins>
56+
</build>
57+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.didispace.stream;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class ExampleApplication {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(ExampleApplication.class, args);
11+
}
12+
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.didispace.stream;
2+
3+
import org.springframework.cloud.stream.annotation.Input;
4+
import org.springframework.messaging.SubscribableChannel;
5+
6+
interface ExampleBinder {
7+
8+
String NAME = "example-topic";
9+
10+
@Input(NAME)
11+
SubscribableChannel input();
12+
13+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.didispace.stream;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import org.springframework.cloud.stream.annotation.EnableBinding;
6+
import org.springframework.cloud.stream.annotation.StreamListener;
7+
8+
@EnableBinding(ExampleBinder.class)
9+
public class ExampleReceiver {
10+
11+
private static Logger logger = LoggerFactory.getLogger(ExampleReceiver.class);
12+
13+
@StreamListener(ExampleBinder.NAME)
14+
public void receive(String payload) {
15+
logger.info("Received: " + payload);
16+
}
17+
18+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
spring.application.name=stream-consumer-group
2+
server.port=0
3+
4+
spring.cloud.stream.bindings.example-topic.group=aaa
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.didispace;
2+
3+
import org.junit.Test;
4+
import org.junit.runner.RunWith;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.cloud.stream.annotation.EnableBinding;
7+
import org.springframework.cloud.stream.annotation.Output;
8+
import org.springframework.integration.support.MessageBuilder;
9+
import org.springframework.messaging.MessageChannel;
10+
import org.springframework.test.context.junit4.SpringRunner;
11+
12+
@RunWith(SpringRunner.class)
13+
@EnableBinding(value = {ExampleApplicationTests.ExampleBinder.class})
14+
public class ExampleApplicationTests {
15+
16+
@Autowired
17+
private ExampleBinder exampleBinder;
18+
19+
@Test
20+
public void exampleBinderTester() {
21+
exampleBinder.output().send(MessageBuilder.withPayload("Produce a message from : http://blog.didispace.com").build());
22+
}
23+
24+
public interface ExampleBinder {
25+
26+
String NAME = "example-topic";
27+
28+
@Output(NAME)
29+
MessageChannel output();
30+
31+
}
32+
33+
}

0 commit comments

Comments
 (0)