Spring Cloud Stream是Spring Cloud的组件之一,是一个为微服务应用构建消息驱动能力的框架。

1、导入引用

        <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>

  

2、定义接口

public interface StreamClient {

    String INPUT = "input";
String OUTPUT = "output"; @Input(INPUT)
SubscribableChannel input(); @Output(OUTPUT)
MessageChannel output();
}

  

  

3、定义消息的接收

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.SendTo;
import org.springframework.stereotype.Component; @Component
@EnableBinding(StreamClient.class)
@Slf4j
public class StreamReceiver { @StreamListener(StreamClient.INPUT)
@SendTo(StreamClient.OUTPUT)
public Object processInput(String message){
log.info("Input StreamReceiver:{}", message );
return message;
} @StreamListener(StreamClient.OUTPUT)
public void processOutPut(String message){
log.info("Output StreamReceiver:{}", message );
} }

  

4、定义消息的发送

@RestController
public class SendMessageController { @Autowired
private StreamClient streamClient; @GetMapping("/sendMessage")
public void process(){
String msg = "hello world";
streamClient.output().send(MessageBuilder.withPayload(msg).build());
} }

  

5. 结果

 6、发送对象

1) 发送者

   /**
* 发送对象
*/
@GetMapping("/sendMessage2")
public void process2(){
OrderDTO orderDTO = new OrderDTO();
orderDTO.setOrderId("123");
streamClient.output().send(MessageBuilder.withPayload(orderDTO).build());
}

  

2)接收者

  @StreamListener(StreamClient.OUTPUT)
public void processOutPut(OrderDTO message){
log.info("Output StreamReceiver:{}", message.toString() );
}

  

7、消息接收到后,再回复消息。使用SendTo

    @StreamListener(StreamClient.INPUT)
@SendTo(StreamClient.OUTPUT) //当Input接收到消息后,回复消息给Output
public Object processInput(String message){
log.info("Input StreamReceiver:{}", message );
return message;
}

  

Spring Cloud Stream的更多相关文章

  1. Spring Cloud Stream同一通道根据消息内容分发不同的消费逻辑

    应用场景 有的时候,我们对于同一通道中的消息处理,会通过判断头信息或者消息内容来做一些差异化处理,比如:可能在消息头信息中带入消息版本号,然后通过if判断来执行不同的处理逻辑,其代码结构可能是这样的: ...

  2. Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

    应用场景 之前我们已经通过<Spring Cloud Stream消费失败后的处理策略(一):自动重试>一文介绍了Spring Cloud Stream默认的消息重试功能.本文将介绍Rab ...

  3. Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)

    应用场景 前两天我们已经介绍了两种Spring Cloud Stream对消息失败的处理策略: 自动重试:对于一些因环境原因(如:网络抖动等不稳定因素)引发的问题可以起到比较好的作用,提高消息处理的成 ...

  4. Spring Cloud Stream消费失败后的处理策略(二):自定义错误处理逻辑

    应用场景 上一篇<Spring Cloud Stream消费失败后的处理策略(一):自动重试>介绍了默认就会生效的消息重试功能.对于一些因环境原因.网络抖动等不稳定因素引发的问题可以起到比 ...

  5. Spring Cloud Stream消费失败后的处理策略(一):自动重试

    之前写了几篇关于Spring Cloud Stream使用中的常见问题,比如: 如何处理消息重复消费 如何消费自己生产的消息 下面几天就集中来详细聊聊,当消息消费失败之后该如何处理的几种方式.不过不论 ...

  6. Spring Cloud Stream如何消费自己生产的消息?

    在上一篇<Spring Cloud Stream如何处理消息重复消费>中,我们通过消费组的配置解决了多实例部署情况下消息重复消费这一入门时的常见问题.本文将继续说说在另外一个被经常问到的问 ...

  7. Spring Cloud Stream如何处理消息重复消费?

    最近收到好几个类似的问题:使用Spring Cloud Stream操作RabbitMQ或Kafka的时候,出现消息重复消费的问题.通过沟通与排查下来主要还是用户对消费组的认识不够.其实,在之前的博文 ...

  8. 使用 Spring Cloud Stream 构建消息驱动微服务

    相关源码: spring cloud demo 微服务的目的: 松耦合 事件驱动的优势:高度解耦 Spring Cloud Stream 的几个概念 Spring Cloud Stream is a ...

  9. Kafka及Spring Cloud Stream

    安装 下载kafka http://mirrors.hust.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz kafka最为重要三个配置依次为:broke ...

随机推荐

  1. day 42 mysql 数据类型

    mysql 数据类型   数据类型 truncate t1 (删除表) # 无符号类型 alter table t1 modify id tinyint unsigned (表里有值,不能直接改) d ...

  2. 关于 数据库 my_slq的 安装及其卸载

    安装的时候 注意事项 自定后 根据电脑的系统版本 选择32  或者64  然后选择→方向键 密码默认是123456  或者  123123 查看装的数据库是否安装好了 如何完全卸载 mysql 数据库 ...

  3. mysql主从复制-读写分离

    mysql主从复制+读写分离 环境:mysql主:193.168.1.1mysql从:193.168.1.2amoeba代理:193.168.1.3########################## ...

  4. Eclipse的配置

    1 Eclipse的工作空间和新建工程 1.1: 工作空间 其实就是我们写的源代码所在的目录 1.2: 创建工程(项目) 右键/Package Explore 空白区/new /Java Projec ...

  5. ssm 配置多个数据源

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  6. 微软Power BI 每月功能更新系列——5月Power BI 新功能学习

    Power BI Desktop 5月份功能摘要 本月Power BI Desktop除了许多报表功能的更新,Power BI对条件格式进行了重大改进,可以对报表的任何字段(包括字符串和日期)进行条件 ...

  7. PL/SQL程序设计、流程控制

    PL/SQL是 Procedure Language & Structured Query Language 的缩写 PL/SQL是对SQL语言存储过程语言的扩展 PL/SQL程序由三个块组成 ...

  8. 正则表达式 —— Cases 与 Tricks

    1. cases 匹配任意单词(两侧可以有多个空格): ( +[a-zA-Z]+ +) 上述表达式无法匹配句子末尾的单词,若想匹配句尾或者逗号前的单词,则可拓展为: ( +[a-zA-Z]+[?,.] ...

  9. Oracle 10g安装报错记录

    环境描述linux 5.6 安装Oracle 10.2.0.1.0 DBCA问题 1)DBCA图形化界面,出现乱码 测试环境,操作系统中文字符编码导致 export LANG=C 2)DBCA图形化点 ...

  10. 服务器安装wordpress,搭建自己的博客平台

    自己构造网站的话,建立一个简单的网页还可以(比如,yongjieshi.com),对于建立复杂的博客就需要借助第三方的工具,常见的有wordpress,在阿里云上安装wordpress,我主要参考了这 ...