關於RabbitMQ的工作模式

2021-10-10 08:40:29 字數 1756 閱讀 1968

首先了解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各...