2024年Java最全SpringCloud-Stream实战快速入门,java高级程序员面试笔试宝典

最后

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

Binder可以生成Binding,Binding用来绑定消息容器的生产者和消费者,它有两种类型,INPUT和OUTPUT,INPUT对应于消费者,OUTPUT对应于生产者。

POM

主要增加了 org.springframework.cloud:spring-cloud-starter-stream-rocketmq 依赖,

老顾采用最新Spring Boot的2.1.8.RELEASE版本SpringCloud的Greenwich.SR2版本;Spring-Cloud-Alibaba的2.1.0.RELEASE版本。

增加依赖image图片

EnableBinding配置

图片

我们需要通过在配置类上使用@EnableBinding指定需要使用的Binding,它指定的是一个接口,在对应接口中会定义一些标注了@Input或@Output的方法,它们就对应一个Binding了。

@Output注解对应的是org.springframework.messaging.MessageChannel,代表发布者
@Input注解对应的是org.springframework.messaging.SubscribableChannel,代表消费者

Source内置接口

org.springframework.cloud.stream.messaging.Source是内置的Output接口

小伙伴们也可以不用内置的,模仿Source自行定义就行了

image

它定义了一个OUTPUT类型的Binding,名称为output,当不通过@Output指定Binding的名称时,默认会使用方法名作为Binding的名称。

Sink内置接口

Sink的定义如下,它定义了一个INPUT类型的Binding,名称为input,当不通过@Input指定Binding的名称时,默认会使用方法名作为Binding的名称。image

在一个接口中可以同时定义多个Binding,只需要定义多个@Input或@Output标注的方法。Processor接口同时继承了Source和Sink接口,所以当@EnableBinding指定了Processor接口时相当于同时应用了两个Binding。

public interface Processor extends Source, Sink {
}
@EnableBinding({ Processor.class })

生产者

我们来定义一个output类型的Bindingimage

在上面代码中我们指定了@EnableBinding接口为Source接口,即启用了名称为output的OUTPUT类型的Binding。Spring Cloud会自动实现该Binding的实现,也会提供Binding接口的实现,并注册到bean容器中。即可以在程序中自动注入Source类型的bean,也可以注入MessageChannel类型的bean

image

上面定义了一个生产发布服务,直接注入Source类型的bean,然后通过Source的output()获取MessageChannel实例,通过它的send()方法进行消息发送。

另一种使用方式,就是直接获取MessageChannel,如下代码,效果是一样的。

image

那发送的消息究竟会发送到哪里呢?这就需要我们来定义对应的Binding和实际消息容器的生产者的映射了。可以通过spring.cloud.stream.bindings..*的形式定义Binding的一些属性。

具体有什么属性可查看org.springframework.cloud.stream.config.BindingProperties

这里我们通过其destination属性指定该Binding对应的实际的目的地对应于RocketMQ就是一个Topic。

spring.cloud.stream.bindings.output.destination=test-topic

即我们上面发送的消息将发到RocketMQ的名为test-topic的Topic。
RocketMQ是需要指定NameServer的,所以在发送消息前,还需要基于RocketMQ这个Binder配置其NameServer的地址。

spring.cloud.stream.rocketmq.binder.namesrv-addr=192.168.31.153:9876

在启动了RocketMQ的NameServer和Broker之后,就可以利用上面的代码进行消息发送了。测试代码如下。

在测试的时候可以在启动RocketMQ时指定autoCreateTopicEnable=true以开启自动创建Topic的功能,如mqbroker -n localhost:9876 autoCreateTopicEnable=true。

image

继承CommandLineRunner接口,启动就会执行run方法,就是调用ProviderService发送消息。到Rocketmq控制台查看消息image

image

消费者

消费者接收消息和生产者类似,也需要定义相应的Binding,也需要通过@EnableBinding进行指定。Spring Cloud的Sink接口中已经定义好一个名为input的Binding,如果只需要一个接收Binding,可以直接拿来用。

学习分享,共勉

这里是小编拿到的学习资源,其中包括“中高级Java开发面试高频考点题笔记300道.pdf”和“Java核心知识体系笔记.pdf”文件分享,内容丰富,囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。同时还有Java进阶学习的知识笔记脑图(内含大量学习笔记)!

资料整理不易,读者朋友可以转发分享下!

Java核心知识体系笔记.pdf

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

中高级Java开发面试高频考点题笔记300道.pdf

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

架构进阶面试专题及架构学习笔记脑图

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

Java架构进阶学习视频分享

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

ps://bbs.csdn.net/topics/618154847)收录**

需要这份系统化的资料的朋友,可以点击这里获取

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值