14.Spring AMQP核心组件介绍

Spring整合AMQP需要引入的依赖

<dependency> 
	<groupId>org.springframework.amqp</groupId>
 	<artifactId>spring-rabbit</artifactId> 
	<version>1.3.5.RELEASE</version> 
</dependency>

ConnectionFactory

  • Spring AMQP 的连接工厂接口,用于创建连接。
  • CachingConnectionFactory 是ConnectionFactory 的一个实现类。
  • 能指定Confirm Type和开启生产者确认模式和创建连接等

AmqpAdmin(RabbitAdmin )

  • RabbitAdmin 是 AmqpAdmin 的实现
  • 封装了对 RabbitMQ 的基础管理操作,比 如对交换机、队列、绑定的声明和删除等

Message

  • Message 是 Spring AMQP 对消息的封装。
  • 有两个重要的属性分别是:body(消息体),messageProperties(消息属性)

AmqpTemplate(RabbitTemplate)

  • 是个接口
  • 唯一的实现类是RabbitTemplate
  • 用来简化消息的收发,支持消息的确认(Confirm)与返回(Return)等等
  • 它 封 装 了 创 建 连 接 、 创 建 消 息 信 道 、 收 发 消 息 、 消 息 格 式 转 换 (ConvertAndSend→Message)、关闭信道、关闭连接等等操作。
  • 针对于多个服务器连接,可以定义多个 Template。可以注入到任何需要收发消息的 地方使用

MessageListener 消息侦听

  • MessageListener 是 Spring AMQP 异步消息投递的监听器接口
  • 它只有一个方法 onMessage
  • 作用类似于 Java API 中的 Consumer。

MessageListenerContainer(SimpleMessageListenerContainer)

  • MessageListenerContainer可以理解为MessageListener的容器
  • 默认是SimpleMessageListenerContainer
  • 一个Container 只有一个 Listener,但是可以生成多个线程使用相同的 MessageListener 同时消费消息
  • Container 可以管理 Listener 的生命周期,可以用于对于消费者进行配置
  • 可以做到:动态添加移除队列、对消费者进行设置,例如 ConsumerTag、Arguments、 并发、消费者数量、消息确认模式等等
  • 在 SpringBoot2.0 中新增了一个 DirectMessageListenerContainer

MessageConvertor 转换器

  • RabbitMQ 的消息在网络传输中需要转换成 byte[](字节数组)进行发送
  • 消费者 需要对字节数组进行解析
  • 在 Spring AMQP 中,消息会被封装org.springframework.amqp.core.Message 对象。消息的序列化和反序列化,就是处理 Message 的消息体 body 对象
  • 如果消息已经是 byte[]格式,就不需要转换。
  • 如果是 String,会转换成 byte[]。
  • 如果是 Java 对象,会使用 JDK 序列化将对象转换为 byte[](体积大,效率差)。
  • 在 调 用 RabbitTemplate 的 convertAndSend() 方 法 发 送 消 息 时 , 会 使 用 MessageConvertor 进行消息的序列化,默认使用 SimpleMessageConverter。
  • 在某些情况下,我们需要选择其他的高效的序列化工具。
  • 可以通过设置rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());来进行设置(conver自己选择)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值