Stream进阶篇-动态绑定消息通道

本文深入探讨了Spring Cloud Stream中的动态绑定消息通道。通过注入BinderAwareChannelResolver,利用PathVariable的dest值模拟通道名,结合消息体和contentType头信息,依据dest属性动态绑定通道。若未设定dest,则使用'dynamic1-channel'为默认通道。通过Spel表达式解析头信息获取dest,使用ExpressionEvaluatingRouter和MessageProcessor进行消息处理。
摘要由CSDN通过智能技术生成
前言
在之前的章节中,所有消费者和生产者均通过 @EnableBinding定义,此方式能够快速的构建生产消费关系,但仔细想想,如果我们需要根据一定的条件决策消息生产者将消息发往哪个通道,貌似当前简单粗暴的方式无法满足。如此常见的场景,springcloud必然会帮我们想到,通过 BinderAwareChannelResolver的bean实例即可实现动态通道的选择,其会伴随 @EnableBinding注解自动完成注册。

本章概要
1、BinderAwareChannelResolver的应用;
2、ExpressionEvaluatingRouter的应用;

BinderAwareChannelResolver的应用
首先来看 BinderAwareChannelResolver的直接应用,为了方便场景模拟,采用一个rest api方式触发消息的生产发送。

消费者Receiver工程改造
1、在MySink中添加如下两个动态接收通道, dynamic1-channeldynamic1-channel
package com.cloud.shf.stream.sink;
public interface MySink {
    /*********************************动态通道选择示例******************************/
    String DYNAMIC1_CHANNEL = "dynamic1-channel";
    String DYNAMIC2_CHANNEL = "dynamic2-channel";

    @Input(DYNAMIC1_CHANNEL)
    SubscribableChannel dynamic1Input();

    @Input(DYNAMIC2_CHANNEL)
    SubscribableChannel dynamic2Input();
}
2、在SinkReceiver.class中添加对上述两个通道的监听,并打印接收内容:
/*********************************动态通道选择示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值