-
AMQP:高级消息队列协议
生产者将消息发送到交换机,交换机通过路由将消息发给消息队列,消费者从消息队列中拿去数据
查看全部 -
RabbitMQ是一个开元的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言来编写的,兵器RabbitMQ是基于 AMQP协议的。
查看全部 -
## RabbitMQ核心概念
server:又称Broker,接受客户端的连接,实现AMQP实体服务
Connection:连接,应用程序与Broker的网络连接
Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。
Message:消息,服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行装饰,比如消息的优先级、延迟等属性;body则就是消息体内容
Virtual host:虚拟地址,用于逻辑隔离,是最上层的消息路由;一个Virtual host有若干个Exchange和Queue,同一个Virtual Host里面不能有相同名称的Exchange和Queue
Exchang:交换机,接收信息,根据路由键转发消息到绑定的Queue
Binding:Exchang和Queue之间的虚拟连接,binding中可以包含routing key(路由键)
Routing key:一个路由规则,Virtual host可用它来确定如何路由一个特定消息
Queue:也称为Message Queue,消息队列,保存消息并将它们转发给消费者
查看全部 -
RabbitMQ的特点:
- RabbitMQ底层采用Erlang语言进行编写
- 开源、性能优秀、稳定性好
- 与SpringAMQP完美的整合、API丰富
- 集群模式丰富、表达式配置、HA模式、镜像队列模型
- 保证数据不丢失的前提做到高可靠性、可用性
### AMQP介绍
AMQP全称:Advanced Message Queuing Protocol(高级消息队列协议)
查看全部 -
spring-boot-starter-amqp rabbitmq的依赖
commons-lang3
commons-io
fastjson com.alibaba
查看全部 -
消息消费时,抛出一个异常: ...Retries exhausted for message... // 确认接收 Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG); try { // 批量接收 false channel.basicAck(deliveryTag, false); } catch (IOException e) { e.printStackTrace(); } // 异常信息 o.s.a.r.r.RejectAndDontRequeueRecoverer : Retries exhausted for message (Body:'[B@46ba68ad(byte[204])' MessageProperties [headers={}, contentType=application/x-java-serialized-object, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, redelivered=true, receivedExchange=order-exchange, receivedRoutingKey=order.abcd, deliveryTag=1, consumerTag=amq.ctag-kTHEUvVt2M4G9i3E26ajFQ, consumerQueue=order-queue]) Caused by: org.springframework.amqp.support.converter.MessageConversionException: failed to convert serialized Message content Caused by: java.lang.IllegalArgumentException: Could not deserialize object Caused by: java.io.InvalidClassException: com.example.rabbitmq.entity.Order; local class incompatible: stream classdesc serialVersionUID = -1776216368770403457, local class serialVersionUID = -1730674339131758209 // 我想是我在创建Order对象时,没有添加serialVersionUID原因。 // 我在重启消费端的时候,抛出这样的异常,最后我把Queue删了。
查看全部 -
模型模型模型
查看全部 -
AMQP协议模型
查看全部 -
@RabbitListener
查看全部 -
spring-boot-starter-web
查看全部 -
OrderReceiver
查看全部 -
Consumer配置
查看全部 -
-测试用例
查看全部 -
OrderSender
查看全部 -
Order实体类
查看全部
举报