当前位置: 首页> 财经> 访谈 > 少儿编程的好处和坏处_成人短期培训能学什么_应用商店关键词优化_网络推广优化

少儿编程的好处和坏处_成人短期培训能学什么_应用商店关键词优化_网络推广优化

时间:2025/7/9 3:45:50来源:https://blog.csdn.net/qq_25308331/article/details/145937271 浏览次数:0次
少儿编程的好处和坏处_成人短期培训能学什么_应用商店关键词优化_网络推广优化

Spring Cloud Stream 是让微服务更容易在应用中实现消息的发布和订阅处理的框架。Stream 支持与多种消息中间件整合,如Kafka、RibbitMQ等。

本文使用的是Kafka消息中间件,依赖文件为:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-kafka</artifactId><version>1.2.1.RELEASE</version>
</dependency>

1 Stream 应用模型

图 Spring Cloud Stream 的应用模式

通道接口与监听接口:用于定于消息的输入和输出通道的接口,通过注解(@Input或@Output)标记方法。该注解的参数为通道名称。而通道名称与消息中间件的主题一对一绑定。

消息通道:对消息队列的一种抽象,用来存放消息发布者发布的消息或消费者所要消费的信息及信息的发送与接收。

消息绑定器:实现应用程序与消息中间件之间交互的隔离。封装了交互细节。

1.1 消息发送和监听步骤

负责发送消息的微服务称为生产者,负责接收消息的微服务称为消费者。

1.1.1 生产者的消息发送

1)添加@EnableBinding注解。例如,@EnableBinding(Source.class)

该注解会触发Spring Cloud Stream进行基本配置,将应用升级为一个Spring Cloud Stream 应用。其可以声明一个或多个(发送或监听)通道接口参数。

2)访问消息通道及发送消息。

发送消息通道用于发送消息(MessageChannel的send方法)。通过上面声明的发送通道接口的方法获取通道。

1.1.2 消费者的消息监听

1)添加@EnableBinding注解。例如,@EnableBinding(Sink.class)

2)@StreamListener 注解方法来实现消息的监听。

@StreamListener(Sink.INPUT)
public void onUserMsgSink(UserMsg userMsg) {System.out.println("收到消息:" + userMsg);
}

1.1.3 相关配置

还需要配置Kafka的连接信息,及消息通道对应的主题。

spring.cloud.stream.kafka.binder.brekers=Kafka的Host

spring.cloud.stream.kafka.binder.zkNodes=zookeeper的Host

生产者的配置:

spring.cloud.bindings.[通道名称].destination= 发送通道对应的主题

消费者的配置:

spring.cloud.bindings.[通道名称].destination= 监听通道对应的主题

spring.cloud.bindings.[通道名称].group= 消费者组名

1.2 通道接口 Channel Interfaces

public interface Source {String OUTPUT = "output";@Output("output")MessageChannel output();
}public interface Sink {String INPUT = "input";@Input("input")SubscribableChannel input();
}

Source 及Sink 为Spring Cloud Stream 框架定义的发送消息通道接口及监听通道接口。@EnableBinding注解的参数就是通道接口的class。@Output来标注获取发送消息通道的方法。其中返回值要是MessageChannel及其子类。@Input来标注获取监听消息通道的方法,返回值要是SubscribableChannel及其子类。

1.2.1 通道接口的注入及使用

@Component
public class UserMsgSender {private final Source source;public UserMsgSender(Source source) {this.source = source;}
}

获取通道,调用Source接口的output()方法。也可以直接在Bean中注入消息通道。

@Component
public class UserMsgSender {private final MessageChannel channel;public UserMsgSender(@Qualifier("output") MessageChannel channel) {this.channel = channel;}
}

如果在服务中定义了多个消息通道,可以通过@Qualifier(“通道名称”)来明确具体的通道。

1.2.2 自定义消息通道

Source定义的发送通道名称为output,Sink定义的监听通道名称为input。我们可以自定义通道。步骤如下:

1)定义通道接口。

public interface ConsumerStreamChannel {@Input("consumerUserMsg")SubscribableChannel userMsg();
}

2)@EnableBinding中声明这个接口。

@EnableBinding(ConsumerStreamChannel.class)

3)在配置文件中为该通道配置相应的主题(或消费组名)。

spring.cloud.bindings.consumerUserMsg.destination= 监听通道对应的主题

spring.cloud.bindings.consumerUserMsg.group= 消费者组名

注意,在使用@StreamListener注解来标注监听方法时,该注解的参数为通道名称。例如,@StreamListener("consumerUserMsg")

关键字:少儿编程的好处和坏处_成人短期培训能学什么_应用商店关键词优化_网络推广优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: