-
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實體類
查看全部
舉報