首先了解rabbitmq的一些名詞
rabbitmq的工作模式
1, ******模式, 訊息生產者直接將訊息加入到佇列中, 訊息消費者監聽訊息佇列, 如果佇列有訊息, 就消費掉, 訊息被拿走後會自動刪除, 但有可能訊息並沒有被消費者正確處理, 但訊息卻已經消失了, 造成消失丟失, 解決: 在訊息正確處理後手動確認, 注意要即時, 否則會造成記憶體溢位
@component
@rabbitlistener(queuestodeclare = @queue("hello")) //接收hello佇列的訊息
public class hellocustomer
}
2, work工作模式: 訊息產生者將訊息放入佇列, 消費者可以有多個, 消費者1,消費者2同時監聽同乙個佇列, 訊息被生成後, c1 c2共同爭搶當前的訊息佇列內容,誰先拿到誰負責消費訊息, 預設情況是平均分配的, 問題: 高併發下會產生乙個訊息被多個消費者同時消費, 需要設定乙個鎖, 保證一條訊息只能被乙個消費者消費
@component
public class workcustomer
@rabbitlistener(queuestodeclare = @queue("work"))
public void receivel2(string message)
}
3, fanout廣播模式: 每個消費者監聽自己的佇列, 且每個佇列繫結交換機, 生產者將訊息傳送給交換機, 由交換機將訊息傳送給繫結的佇列
@component
public class fanoutcustomer )
public void receivel1(string message)
@rabbitlistener(bindings = )
public void receivel2(string message)
}
4, routing路由模式: 此時佇列與交換機的繫結需要指定乙個routing key, 而且交換機也不是將訊息傳送給所有繫結的佇列, 而且傳送給routing key與交換機的routing key匹配的佇列
@component
public class routecustomer //路由key, 只能接收固定路由key的資訊)})
public void receivel1(string message)
@rabbitlistener(bindings = )})
public void receive2(string message)
}
5, topic 主題模式(路由模式的一種): 在路由模式的基礎上新增了routing key的萬用字元功能
@component
public class topiccustomer )
public void receivel(string message)
}
對應工作模式的傳送訊息的測試
public class testmq
@test
public void work()
}@test
public void fanout()
@test
public void route()
@test
public void topic()
}
RabbitMQ的工作模式?
rabbitmq的工作模式?五種 簡單模式 乙個生產者,乙個消費者。生產者生產訊息,將訊息傳送到訊息佇列中,消費者從訊息佇列中獲取訊息並消費 work模式 資源競爭 乙個生產者,多個消費者 生產者生產訊息,將訊息傳送到訊息佇列中,多個消費者同時爭搶訊息,只有搶到的 消費者才能消費訊息 訂閱模式 共享...
RabbitMQ工作模式
rabbitmq工作模式有六種 工作佇列模式,發布訂閱模式,路由模式,萬用字元模式,header模式和rpc模式。1.工作佇列模式 2.發布訂閱模式 交換機型別為funout。3.路由模式 交換機型別為direct。路由模式和發布訂閱模式區別 1 發布訂閱模式不需要繫結routingkey,訊息傳送...
rabbitmq 工作模式
c1 c2輪流接收訊息 啟動兩個接受者 channel.queuedeclare queue que durable false,exclusive false,autodelete false,arguments null 交換機設定為空字串 p發給乙個交換機,這個交換機繫結兩個佇列,c1 c2各...