80 rabbitmq Rabbitmq 基本介紹

Rabbitmq 基本介紹

RabbitMQ是基本實現了趕集消息隊列協議(AMQP)的開源消息代理軟件(也稱作面向消息的中間件),RabbitMQ服務器是用 Erlang語言編寫的
RabitMQ官方網站:

https://www.rabbitmq.com/

6種工作模式:
1,點對點(簡單)的隊列;
2,工作(公平性)隊列;
3,發佈式訂閱模式;
4,路由模式Routing;
5,通配符模式;Topics;
6,RPC

Rabitmq 管理平臺中心
Rabbitmq 管理平臺地址爲: http://127.0.0.1:15672
默認賬號: guest/guest 用戶可以自己創建賬號

Virtual Hosts
像mysql 有數據庫的概念並且可以指定用戶對庫和表等操作的權限,Rabbitmq也有類似的權限管理。在RabbitMQ 中可以虛擬消息服務器VirtualHost,每個VirtualHost 相當一個獨立的RabbitMQ服務器。每個VirtualHost之間是相互隔離的。exchange.queue.message 不能互通。
默認的端口15672:rabbitmq管理平臺端口號
默認的端口5672: rabbitmq消息中間內部通訊的端口
默認的端口號25672 rabbitmq集羣的端口號

Rabbitmq常見名詞:
/Virtual Hosts --分類:
/隊列 存放我們的消息
Exchange 分派我們消息在那個隊列存放起來 類似於nginx

15672---rabbitmq控制檯管理平臺 http協議
25672rabbitmq 集羣通信端口號
Amqp 5672 rabbitmq內部通信的一個端口號

快速入門RabbitMQ 簡單隊列;
首先需要在RabbitMQ平臺創建Virtual Hosts 和隊列
--訂單隊列
--支付度列:

1, 在Rabbitmq 平臺創建一個隊列
2, 在編寫生產者代碼
3,在編寫消費者代碼

MQ如何保證消息不丟失:
1.生產者角色:
確保生產者投遞消息到MQ服務器成功。
ACk消息確認機制: 同步或者異步的形式
方式一: confirms
方式二: 事務消息:

2,消費者角色:
在rabbitmq中:
必須要將消息消費成功後纔會將該消息從mq服務器中移除。
在kafka中:
不管是消費成功還是消費失敗: 消息都不會立刻移除。
3,MQ服務器端:在默認情況下,都會對隊列中的消息實現持久化,持久化到硬盤。

RabitMQ工作隊列
默認的傳統隊列是爲均攤消費,存在不公平性;如果每個消費者速度不一樣的情況下,均攤消費是不公平的,應該是能者多勞。

採用工作隊列
在通道中只需要設置basicQos爲1即可,表示MQ服務器每次只會給消費者推送1條消息必須手動ack確認之後纔會繼續發送。
channel.basicQos(1);
RabbitMQ交換機類型

Direct exchange(直連交換機)
Fanout exchange(扇型交換機)
Topic exchange(主題交換機)
Headers exchange(頭交換機)
/Virtual Hosts---區分不同的團隊
----隊列 存放消息
----交換機 路由消息存放在那個隊列中 類似於nginx
---路由key 分發規則

RabitMQ Fanout 發佈訂閱
生產者發送一條消息,經過交換機轉發到多個不同的隊列,多個不同的隊列就多個不同的消費者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章