SpringCloud Stream @EnableBinding注解过时

2023-10-27

@EnableBinding源码中明确声明

该注解在从3.1版本开始被弃用,推荐我们使用函数编程的方式

我将给出一个生产者和消费者的使用案例:

生产者案例:

yml配置:

server:
  port: 8801

spring:
  application:
    name: cloud-stream-provider
  rabbitmq:
    host: 192.168.220.101
    port: 5672
    username: guest
    password: guest
  cloud:
    stream:
      bindings: #服务的整合处理
        myChannel-out-0: #这个名字是一个通道的名字
          destination: studyExchange #表示要使用Exchange名称定义
          contentType: application/json #设置消息类型,本次为json,文本则设置为“text/plain”

注意bingdings 集合中的key由 通道名-out/in-数字组成

service层代码:

package com.jx.springCloud.service.impl;

import com.jx.springCloud.service.MessageProvider;
import org.springframework.cloud.stream.function.StreamBridge;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.stereotype.Service;

import java.util.UUID;

/**
 * @author LDW
 * @date 2022/4/10 20:35
 */
@Service
public class MessageProviderImpl implements MessageProvider {

    private final StreamBridge streamBridge;

    public MessageProviderImpl(StreamBridge streamBridge) {
        this.streamBridge = streamBridge;
    }

    @Override
    public String send() {
        String serial = UUID.randomUUID().toString();
        streamBridge.send("myChannel-out-0", MessageBuilder.withPayload(serial).build());
        System.out.println("发送消息: " + serial);
        return null;
    }
}

@Autowire注解自动注入StreamBridge的实例,上述代码的写法省去了@Autowire注解

StreamBridge的send方法第一个参数是binding的名字,第二个参数是想要发送的消息

controller层代码:

@RestController
public class SendMessageController {

    private final MessageProvider messageProvider;

    public SendMessageController(MessageProvider messageProvider) {
        this.messageProvider = messageProvider;
    }

    @GetMapping("/sendMessage")
    public String sendMessage() {
        return messageProvider.send();
    }
}

消费者案例:

yml配置:

server:
  port: 8802

spring:
  application:
    name: cloud-stream-consumer
  rabbitmq:
    host: 192.168.220.101
    port: 5672
    username: guest
    password: guest
  cloud:
    stream:
      bindings: #服务的整合处理
        myChannel-in-0: #这个名字是一个通道的名字
          destination: studyExchange #表示要使用Exchange名称定义
          contentType: application/json #设置消息类型,本次为json,文本则设置为“text/plain”

service层代码:

@Service
@Slf4j
public class StreamConsumerService {
    @Bean
    public Consumer<String> myChannel() {
        return message -> log.info("消息:"+message);
    }
}

上述代码的方法名(即Consumer的bean实例名)需要是yml配置中的通道名,应用程序启动后会自动接收生产者发送的消息

发送请求:localhost:8801/sendMessage

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud Stream @EnableBinding注解过时 的相关文章

随机推荐

  • 初学怎么看电路板

    电路板起支撑与固定无件的作用 同时又是各线路间的连线媒介 起到传送电信号重要作用 电路原理图为表达清晰起见 将功能电路集中在一起 而电路板要考虑电流大小 爬电距离 电磁兼容 热能耗 散热方式和外部接插件的位置等问题 需要有电路基础和电磁兼容
  • psi-probe安装手记

    作者 fbysssmsn jameslastchina hotmail com blog blog csdn net fbysss声明 本文由fbysss原创 转载请注明出处关键字 tomcat监控 probe 一 简介 psi probe
  • UML类关系

    UML类关系 OVERVIEW UML类关系 1 继承关系 2 关联关系 单向关联 双向关联 自关联 3 聚合关系 4 组合关系 5 依赖关系 最后总结 1 继承关系 继承也叫作泛化 Generalization 用于描述父子类之间的关系
  • Android一键清除其他应用缓存数据,有没有什么好方法?【已解决】

    复制链接 发表于 2013 5 13 10 41 来自 51CTO网页 只看他 楼主 想做个功能 清除一个应用下面的所有数据 比如sharedPreference和数据库等等 请问大家有没有什么想法呢 分割线 因为下面是解决方法 如果一个应
  • 详解区块链技术,如何运作

    区块链是数字加密货币比特币的核心技术 区块链是一个分布式数据库 包含参与方之间已执行和共享的所有交易或数字事件的记录 每一笔交易都经过系统大多数参与者的验证 它包含每笔交易的每一条记录 比特币是最流行的加密货币 也是区块链的一个例子 区块链
  • 算法导论 学习笔记 第四章 分治策略(部分)

    分治策略中 我们递归地求解一个问题 每层递归中应用如下三个步骤 1 分解 将问题划分为一些子问题 子问题的形式与原问题一样 只是规模更小 2 解决 递归地求解子问题 如果子问题规模足够小 则停止递归 直接求解 3 合并 将子问题的解组合成原
  • ajax 设置超时 错误码,jQuery - 拦截全部Ajax请求(统一处理超时、返回结果、错误状态码 )...

    样例代码 hangge com 全局的ajax访问 处理ajax清求时session超时 ajaxSetup contentType application x www form urlencoded charset utf 8 compl
  • 解决debug时断点自动进入到URLClassPath.class类中

    转发自 url http blog sina com cn s blog 447dca3d01015yqf html url 问题 在eclipse中debug某个类 结果断点每次都先跳到URLClassPath class中 但是在这个类
  • Error: Unable to find git in your PATH.

    周五打开as以及vs都可以正常编译项目 今天已编译就出这个Error Error Unable to find git in your PATH 最终在Github上找到答案 https github com flutter flutter
  • numpy中的mgrid函数

    mgrid函数返回多维结构 ret np mgrid 第1维 第2维 第3维 一维的表示是np mgrid 起点 终点 步长 二维的表示是np mgrid 起点 终点 步长 起点 终点 步长 当步长为实数时 表示按间隔来分 1表示从起点按0
  • RT-Thread记录(十八、I2C软件包 — 温湿度传感器 SHT21与EEPROM 24C02)

    本文学习测试一下几款典型设备的 RT Thread I2C软件包 目录 前言 一 RT Thread I2C 总线注册 1 1 I2C 设备使用步骤 1 2 检查问题 二 温湿度传感器软件包 2 1 添加及基本测试 2 2 程序中使用 三
  • Hive初始化报错:org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver

    Hive初始化报错 org apache hadoop hive metastore HiveMetaException Failed to load driver 完整错误如下所示 org apache hadoop hive metas
  • GAN网络的重新学习的一些内容记录

    20211130 本篇文章属于自己在学习过程中的一些内容记录 正是因为对这些内容不理解 才有了这篇文章 同时会记录一些自己的思考 对与错请仔细斟酌 0 引言 经过了一年多 上次专门研究GAN是去年的时候 学习了基础的原理 也记录了一些文章
  • 架构-负载均衡

    互联网常见的分布式加构分层 1 客户端层 浏览器 APP 小程序 等 2 反向代理层 Nginx 3 站点层 web server 4 服务层 service dubbo webservic 5 数据层 DB 这五个分层的负载均衡策略 1
  • typescript版本的扫雷游戏设计(思路+代码)

    思路 生成图片矩阵 点击格子 如果 第一次 且 新游戏 生成除该格子外的雷图 统计数字 如果 该格子是雷 爆炸 否则 如果 格子数字是0 深度搜索0区域 加入展示区域 如果格子已经打开 忽略 如果格子标识旁边有雷 把该格子加入展示区域 打开
  • 动画程序时长缩放是什么意思_修手机的朋友说:安卓机这样设置,感受跟苹果一样的过渡动画...

    众所周知 IOS系统的过渡动画是出了名的丝滑 因为就在安卓系统挤破脑袋追求流畅时 苹果工程师竟然反其道而行的降低了手机响应频率 这就导致iPhone的使用者在不同页面和软件切换时能明显感知到一个从慢到快的过程 这项功能在原厂的安卓系统上是没
  • 值得一看的技术类书籍

    1 linux 书 Debug Hacks中文版 深入调试的技术和工具
  • C语言开发MicroPython模块(向module添加type)

    MicroPython向module添加type的方法 以及向type添加function的方法都是按照定义好的固定框架进行添加 module添加type的代码格式如下 include stdint h include stdio h in
  • M2芯片安装Anaconda和pytorch

    记录安装过程中遇到的问题 希望帮助到同样用mac的朋友 1 安装好Anaconda后 在启动台无法打开navigator 解决办法 终端输入 which anaconda navigator 返回navigator所在位置 command
  • SpringCloud Stream @EnableBinding注解过时

    EnableBinding源码中明确声明 该注解在从3 1版本开始被弃用 推荐我们使用函数编程的方式 我将给出一个生产者和消费者的使用案例 生产者案例 yml配置 server port 8801 spring application na