訊息佇列 RabbitMQ和Kafka

2021-09-28 18:56:50 字數 2089 閱讀 8670

2種模式

點對點:consumer主動對queue監控,檢查是否收到訊息

優點:解耦(通過中介軟體通訊)

冗餘:可做快取

擴充套件性順序保證

非同步通訊:consumer即使down掉,訊息還是儲存在queue,等consumer恢復會自動處理訊息

關於broker裡的exchange不可以直接將訊息發給queue,必須由他進行過濾,

exchange 的四種模式:

queue與consumer:

push模式:消費者定期主動去queue監控是否由message

消費完之後,queue中不儲存任何訊息    

定義:分布式的訊息佇列

集群:每個集群都是kafka例項,每個例項叫broker,依賴於zookeeper,多個集群直接可做備份,consumer 消費的是leader topic,資料儲存在topic裡

配置檔案位置:/etc/config/server.properties

修改broker.id

指定收到資料的位置(在指定位置可以找到建立的topic,在topic裡看到000000123.index索引檔案和00000123.logshou到的資料)

修改集群zookeeper

consumer依賴zookeeper儲存meta資料

2個consumer可以同時消費同乙個topic裡的訊息,zookeeper裡儲存consumer消費進度

在bin目錄下可以看到

命令:bin/kafka-server-start.sh -daemon config/server.properties

-daemon:守護程序,可以在後台執行,如果不加-daemon看到的是阻塞程序,關閉connection後kafka停止執行

命令:bin/kafka-server-stop.sh 後面不需要加配置檔案,加了也可以

檢視是kafka否執行命令:jps 

檢視topics命令:bin/kafka-topics.sh --zookeeper 10.1.1.1:2181 --list

建立topic命令:bin/kafka-topics.sh --create  --zookeeper 10.1.1.1:2181 --topic one --partition 2 --replication-factor 2(副本數)

ps : 此時,如果有3個集群,會在乙個broker裡存在乙個one-0,第二個broker裡存在one-1,第三個裡one-1和one-0,整個集群2個one-0和one-1, 副本數不可以超過集群數

刪除topic命令:bin/kafka-topics.sh --delete --zookeeper 10.1.1.1:2181 --topic one

log位置:server.log

繫結topic命令:bin/kafka-console-producer.sh --broker-list 10.1.1.1:9092 --topic one

> 在此處輸入要放入topic裡的message

繫結topic命令:bin/kafka-console-consumer.sh --zookeeper 10.1.1.1:9092 --topic one

ps:當訊息被consumer消費後在log中會生成諸多類似consumer-offset-01的偏移量log檔案,若多個consumer同時消費乙個topic,是按輪詢偏移量的方式消費,由zookeeper進行管理

作用:維護乙個集群,防止單機故障,同步訊息,集群種的leader是由zookeeper決定,/data/version-2中儲存的是zookeeper的資料

非同步:2個執行緒,乙個主線程,乙個send執行緒

訊息佇列 Kafka和rabbitMQ

0.建立topic bin kafka topics.sh create zookeeper localhost 2181 replication factor1 partitions1 topic test 1.檢視kafka topic列表 bin kafka topic.sh zoopkeep...

訊息佇列Rabbitmq

rabbitmq server rabbitmqctl reset rabbitmqctl stop rabbitmqctl stop rabbitmqctl list users rabbitmqctl list queues rabbitmqctl add user user name user...

訊息佇列RabbitMQ

這是乙個很嚴肅的問題。系統之間解除耦合,可以讓不同語言編寫的系統通訊互動 保證伺服器負載不會飆公升。高大上一點就是流量削峰。讓程式變成非同步,提高響應速度。把費時任務放到另乙個程序或執行緒去執行。redis實現 剛開始學習redis時,一看這個鍊錶不就是給佇列準備的嗎?所以,一心扎進去,要寫個佇列出...