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注解过时 的相关文章

  • 如何在 Flutter 中为 Button 添加渐变?

    有没有办法改变ElevatedButton背景颜色渐变 如果没有一些小瑕疵或问题 例如缺少涟漪效应 不需要的边框 不尊重主题的内容 上述所有解决方案都无法真正发挥作用minWidth对于按钮 The 下面的解决方案没有上述问题 关键部分是使
  • WifiConfiguration 在 Lollipop 中启用网络

    我正在研究 Wifi 项目 有一个模块可以让用户以编程方式加入 wifi 在 kitkat 及以下版本中它可以成功工作 但在 Lollipop 中它不起作用 这是代码 WifiManager wifiManager WifiManager
  • 如何在 Android 中以编程方式配置启动器活动?

    我正在开发一个具有两项活动的应用程序 LoginActivity and MainActivity 当用户首次打开应用程序时 他将登录并且他的凭据 用户名和令牌 保存在Preferences 现在 如果用户再次打开应用程序MainActiv
  • 关于android Sqlite在多进程情况下的安全性

    在我的应用程序中 存在多个进程 并且在每个进程中 我需要访问同一个SQLite数据库 当然 这意味着超过2个线程 所以我不仅担心SQLite的线程安全性 还担心SQLite的线程安全性 还有过程安全 这种情况的一种解决方案是使用内容提供者
  • Android,无法从谷歌API获取天气

    以下代码之前运行良好 class RetreiveWeatherTask extends AsyncTask
  • 无法打开本地终端

    我尝试在 Android Studio 中初始化我的终端 但它给了我错误 它说 无法打开本地终端 java io IOException 无法创建 PTY 我的电脑运行的是 Windows 10 如何解决这个问题 当您从 Github 存储
  • Android 中的 XmlPullParser 陷入困境

    经过多个小时的搜索和调试后 我仍然停留在同一个地方 并且 Eclipse 没有帮助我 我试图解析这个 RSS 提要 http fr espnf1 com rss motorsport story feeds 0 xml type 2 这很简
  • Android 可检查子菜单选项

    所以我有一个用于选项菜单项的子菜单 我想要一个可检查条目的列表 用户可以根据需要选择 取消选择多个条目 我无法解决的唯一问题是如何防止单击其中一个复选框时关闭选项菜单 我看到 PerformShortcut 有一个 FLAG PERFORM
  • 适用于 Droid 手机的数学或 LaTeX 引擎 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Android 手机有可用的数学或 LaTeX 引擎吗 我最喜欢的抽认卡应用程序 AnyMemo 似乎
  • 完成特定 Activity 的所有实例

    应用程序中可以有很多活动 最后启动的活动保留在堆栈顶部 按下后它会完成当前活动 我有一系列活动 这是流程 如果我们有 A B C 1 D C 2 活动 C 1 和 C 2 是在导航应用程序时启动的活动 C 的两个不同实例 因此 必需的是清除
  • 无法调整 Android React Native 模块中线性布局子项的大小

    完整代码在这里 https github com sbaar ResizableLLRN 这里有关于 java 中正确行为和 React Native 中错误行为的视频 https drive google com file d 0Bxl2
  • 创建用于 Android 库分发的 JAR

    我正在开发一个 android 库 并希望导出一个 JAR 文件 我可以分发该文件供其他人在他们的应用程序中使用 我不想分发源代码 因为它包含有关发布到我的网络服务器的详细信息 我尝试使用在 bin 目录中创建的 JAR 文件并将该 jar
  • SDK 管理器中缺少 Google Play 服务

    我想在我的应用程序中使用 Google 地图 我想在 SDK 管理器中安装 Google Play 服务 但是当我转到 SDK 管理器时 我没有看到 Google Play 服务 为什么 我该如何安装这个 我可以独立于 SDK Manage
  • 为什么设置 MediaRecorder 时显示错误 IllegalStateException?

    我的代码设置 MediaRecorder 它显示行集质量错误 mMediaRecorder new MediaRecorder Step 1 Unlock and set camera to MediaRecorder mCamera st
  • Android Youtube API 可用吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有适用于 Android 的 YouTube API 吗 如果不是 除了通过网络浏览器之外 如何从 Yo
  • Android 简单 TextView 动画

    我有一个 TextView 我想倒计时 3 2 1 发生了事情 为了使其更有趣 我希望每个数字都以完全不透明开始 然后淡出至透明 有没有一种简单的方法可以做到这一点 尝试这样的事情 private void countDown final
  • 日志记录在 Android 设备上实际上有什么作用?

    我一直在 Android 示例中看到这样的代码 try catch Exception e Log e Error e getMessage 什么是Log e实际上在物理设备上做什么 它进入系统日志 开发人员可以通过 SDK 工具访问该日志
  • RecyclerView 适配器的 Kotlin 泛型

    我正在尝试编写一个通用的 recyclerview 适配器 我找到了几个例子 然而 仍然无法弄清楚如何实现通用适配器 我写的代码是 open abstract class BaseAdapter
  • 如何为背景图像添加内边距

    我有一个LinearLayout其中有一个背景图像 一个 9 修补的 png 文件 如何向左和右添加填充 以使背景图像不占据整个宽度 我努力了android paddingLeft and android paddingRight 但这并没
  • 更改 Android 中突出显示文本的颜色

    我不确定这是否可能 也许有人可以纠正我 我在 Android 应用程序中有一个 EditText 视图 该视图在蓝色背景上有白色文本 当选择文本时 通过长按和编辑对话框 我希望突出显示为白色并将文本颜色更改为黑色 令人烦恼的是 似乎没有办法

随机推荐

  • 初学怎么看电路板

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