spring-cloud-stream 1.3.0(Ditmars.RELEASE)之binder-rabbit 学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/undergrowth/article/details/78313307

spring-cloud-stream 1.3.0(Ditmars.RELEASE)之binder-rabbit 学习笔记

概述

EnableBinding—->开启开关,引入一系列的配置类,stream-core层支持

BindingServiceConfiguration—->配置stream-core层

  • 引入StreamListenerAnnotationBeanPostProcessor—->用于解析StreamListener注解
  • 引入BindingService—->核心支持类,通过底层的实现Binder(例如:RabbitMessageChannelBinder)进行Consumer/Producer的绑定
  • 引入OutputBindingLifecycle—->利用BindingService绑定可Bindable的输出队列(即绑定生产者)
  • 引入InputBindingLifecycle—->利用BindingService绑定可Bindable的输入队列(即绑定消费者)
  • 引入SubscribableChannelBindingTargetFactory(BindingTargetFactory)—->创建输入/输出的目标,用于BindingService进行绑定

BindingBeansRegistrar—->用于解析EnableBinding上标记的value以及使用的Input/Output注解信息

  • BindingBeanDefinitionRegistryUtils#registerBindingTargetsQualifiedBeanDefinitions
    • 如果使用Input/Output注解标记的是接口,则使用BindableProxyFactory创建Bindable标示,放入BeanDefinitionRegistry
    • 如果不是接口,则使用Bindings注解进行标记,放入BeanDefinitionRegistry

BinderFactoryConfiguration—->注入BinderFactory,获取实现类的Binder,由BindingService委托调用

  • DefaultBinderFactory—->BinderFactory

RabbitServiceAutoConfiguration—->rabbit实现层支持(依赖spring-cloud-stream-binder-rabbit即可)

  • RabbitAutoConfiguration—->非cloud环境,引入RabbitAutoConfiguration,用于与rabbit进行交互
    • CachingConnectionFactory—->ConnectionFactory—->连接rabbit的连接工厂
    • RabbitTemplate—->rabbit的操作类,send/receive消息
    • AmqpAdmin—->管理操作类,用于创建、删除、管理Exchange/Queue/Binding
  • RabbitMessageChannelBinderConfiguration
    • RabbitMessageChannelBinder—->rabbit核心实现类支持,Binger实现类,用于对接stream-core的BindingService
    • RabbitExchangeQueueProvisioner—->rabbit实现ProvisioningProvider,用于实际产生交换器/队列/绑定操作

测试

-

猜你喜欢

转载自blog.csdn.net/undergrowth/article/details/78313307