【整理】Spring Cloud Stream知识点合集

本文详细介绍了Spring Cloud Stream的关键概念,如群、目标绑定器和目标绑定。讨论了分区技巧,如何通过注解实现输入流和输出流,以及如何使用流列表、发送到消息传递、入站通道适配器、服务激活器、变压器和PollableMessageSource。通过具体的示例代码,展示了如何在Spring Cloud Stream中进行消息的接收、生产和转换。
摘要由CSDN通过智能技术生成

本文来Spring Cloud Stream,做一个知识点盘点和总结,包括:

概念
Stream注解
Spring Integration(Spring Cloud Stream的底层)注解
Spring Messaging(Spring消息编程模型)注解
Spring Cloud Stream API

概念

组内只有1个实例消费。如果不设置group,则stream会自动为每个实例创建匿名且独立的group——于是每个实例都会消费。

组内单次只有1个实例消费,并且会轮询负载均衡。通常,在将应用程序绑定到给定目标时,最好始终指定consumer group。

目标绑定器

与外部消息系统通信的组件,为构造 提供了 2 个方法,分别是 和 ,它们分别用于构造生产者和消费者。Binder使Spring Cloud Stream应用程序可以灵活地连接到中间件,目前spring为kafka、rabbitmq提供binder。BindingbindConsumerbindProducer

目标绑定

Binding是连接应用程序跟消息中间件的桥梁,用于消息的消费和生产,由binder创建。

分区 技巧

严格来说这个不是概念,而是一种Stream提高伸缩性、吞吐量的一种方式。不过不想另起标题了,写在这里吧。

一个或多个生产者将数据发送到多个消费者,并确保有共同特征标识的数据由同一个消费者处理。默认是对消息进行hashCode,然后根据分区个数取余,所以对于相同的消息,总会落到同一个消费者上。

注解

输入(流)

示例:

public interface Barista {
   
    @Input("inboundOrders")
    SubscribableChannel orders();
}

作用:

用于接收消息
为每个binding生成channel实例
指定channel名称
在spring容器中生成一个名为inboundOrders,类型为订阅Channel的bean
在spring容器中生成一个类,实现Barista接口。

输出(流)

示例:

public interface Source {
   
    @Output
    MessageChannel output();
}

作用:

类似Input,只是用来生产消息。

流列表(流)

示例:

@StreamListener(value = Sink.INPUT, condition = "headers['type']=='dog'")
public void handle(String body) {
   
    System.out.println("Received: " + body);
}

@Bean
@InboundChannelAdapter(value =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值