Spring Cloud Stream介绍
官网:https://spring.io/projects/spring-cloud-stream#overview
Spring Cloud Stream is a framework for building highly scalable event-driven microservices connected with shared messaging systems.
The framework provides a flexible programming model built on already established and familiar Spring idioms and best practices, including support for persistent pub/sub semantics, consumer groups, and stateful partitions.
目标
出于好奇且项目是微服务,所以想采用 Spring Cloud Stream一战,以前采用rocketmq-spring-boot-starter觉得挺好的
业务代码实操
引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
<!-- <spring.cloud.alibaba.version>2021.1</spring.cloud.alibaba.version> -->
<version>2021.1</version>
</dependency>
生产者端
配置application.yml
server:
port: 8082
spring:
application:
name: bengdou-user-service
cloud:
# 注册中心
nacos:
discovery:
server-addr: 127.0.0.1:8848
stream:
# Binding配置项,对应 Map<String, BindingProperties> bindings
bindings:
couponProducer-out-0:
destination: coupon-topic
rocketmq:
binder:
name-server: 127.0.0.1:9876
@Autowired
private StreamBridge streamBridge;
消费者端:
server:
port: 8085
spring:
application:
name: bengdou-coupon-service
cloud:
# 注册中心
nacos:
discovery:
server-addr: 127.0.0.1:8848
stream:
# Binding配置项,对应 Map<String, BindingProperties> bindings
bindings:
couponConsumer-in-0:
destination: coupon-topic
group: coupon-comsumer-group
rocketmq:
binder:
name-server: 127.0.0.1:9876
优惠券MQ listener
/**
* 优惠券MQ listener
*
* @author Jiahai
*/
@Slf4j
@Component
public class MqListener {
@Autowired
private CouponService couponService;
/**
* MQ消费者
*
* @return Function<Flux < Message < Long>>
*/
@Bean
public Function<Flux<Message<Long>>, Mono<Void>> couponConsumer() {
return flux -> flux.map(message -> {
log.info(message.toString());
// 用户ID
Long userId = message.getPayload();
// 发放新人注册优惠券
couponService.addNewUserCoupon(userId);
return message;
}).then();
}
总结
个人感觉 rocketmq-spring-boot-starter 使用起来方便些,也比较成熟,而 Spring Cloud Stream 3.x版本资料不多,如果要使用RocketMQ的事务消息等,还要再查询官方文档学习。
参考资料:
Spring Cloud Stream 介绍
Spring Cloud Stream 参考文档
Spring Cloud Stream 3.x 新特性
Spring Cloud Stream RocketMQ Binder