用Spring cloud Stream来开发基于MQ消息驱动的微服务
来源:互联网 发布:大学生网络安全隐患 编辑:程序博客网 时间:2024/06/08 00:11
用Spring cloud Stream来开发基于MQ消息驱动的微服务
Spring boot对MQ类如RabbitMQ、kafka支持都很好,但是仍然要写一些模板代码。Spring cloud stream进一步掩盖了这个差异,仅仅使用配置就可以完成。
Spring cloud Stream 用了基于topic-subsriber的模式,虽然不支持全部MQ的特性,但绝大多数应用来说,这样就足够用了,毕竟方便很多。具体用法如下:
包含的包
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-rabbit</artifactId></dependency>
MQ接口
public interface MyMQInterface{ @Input("通道名") SubscribableChannel inputChannel(); @Output("通道名") MessageChannel outputChanel(); }
- 通道名发送方和接受方必须是一致的
- 一个应用不能既是同一个通道的发送方和接收方,否则会警告。这实际上也没有意义。
- 声明后,启用绑定
@EnableBinding(MyMQInterface.class)
- 可以绑定多个接口
发送MQ消息
@Autowired MyMQInterface myInterface; ..... myInterface.inputChannel().send(MessageBuilder....);
接受消息
@SystemListener("通道名")public void onReceive(Message content)
应用集群问题
- 如果某个应用起来多个实例,如上面的配置,会导致每条消息每个实例都会收到,如果你不想这么做,请在配置里面加上:
spring.cloud.stream.bindings.testOrders.group=分组名
- 每个应用定义一个唯一的分组名,不好和其他应用重复。
消息处理异常
- 如果收到消息处理有问题,比如写入数据库失败,请抛出RuntimeException异常,MQ会重试,不过重试几次后会失败,这个要注意。
阅读全文
0 0
- 用Spring cloud Stream来开发基于MQ消息驱动的微服务
- 用Spring cloud Stream来开发基于MQ消息驱动的微服务
- 使用 Spring Cloud Stream 构建消息驱动微服务
- SpringCloudStream 构建消息驱动的微服务框架 集成kafka_http://blog.spring-cloud.io/blog/sc-stream.html
- 消息驱动:Spring Cloud Stream
- Spring Cloud Stream(消息驱动)
- SpringCloud Stream-----1、消息驱动的微服务概念
- 搭建基于Spring Cloud的微服务注册中心
- 搭建基于Spring Cloud的微服务应用
- 基于Spring Cloud的微服务构建学习-1 基础知识
- 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm
- 几种常见的微服务架构方案简述——ZeroC IceGrid、Spring Cloud、基于消息队列
- 几种常见的微服务架构方案简述——ZeroC IceGrid、Spring Cloud、基于消息队列
- 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm
- 几种常见的微服务架构方案—ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm
- [转载]基于 Spring Boot、Spring Cloud、Spring Oauth2 和 Spring Cloud Netflix 等框架构建的微服务项目
- Spring Cloud微服务
- spring cloud 微服务
- pycharm中使用github
- 刷新
- day12
- SPOJ
- 商品分类
- 用Spring cloud Stream来开发基于MQ消息驱动的微服务
- MyTask工具类
- day13
- i++和++i的区别和实现的原理探究
- html angular+route:模糊查询+限定年龄范围+全部删除+批量删除+修改密码+添加用户
- BZOJ 2393 浅谈题目性质深度挖掘及容斥原理DFS写法
- day14
- Y_Util工具类
- C++单链表中删除指定范围内的元素