RabbitMQ的使用(二)work模式

2021-08-21 09:28:23 字數 1493 閱讀 8638

昨天通宵上線**,白天睡了一天,下午7.00才醒,做個飯繼續學習。

接著上文最普通的佇列乙個生產者推送,乙個消費者消費,如果乙個生產者有多個消費者那會是什麼樣呢。

今天我用乙個for迴圈生產50個訊息來讓消費者消費

package com.hc.work;

import com.hc.mqutil.mqutil;

import com.rabbitmq.client.channel;

import com.rabbitmq.client.connection;

public class product

channel.close();

connection.close(); }

}

消費者一二的**相似

package com.hc.work;

import com.hc.mqutil.mqutil;

import com.rabbitmq.client.channel;

import com.rabbitmq.client.connection;

import com.rabbitmq.client.queueingconsumer;

public class consumer1

}}

消費者2

package com.hc.work;

import com.hc.mqutil.mqutil;

import com.rabbitmq.client.channel;

import com.rabbitmq.client.connection;

import com.rabbitmq.client.queueingconsumer;

public class consumer2

}}

在我們注釋掉channel.basicqos(1);時

我們啟動生產者和消費者,發現乙個消費者獲取到的為奇數。另乙個為偶數,剛好一人一半,但是2休眠的為0.1秒,1休眠的時1秒,這顯然不合理

開啟channel.basicqos(1),這時再測試我們發現2獲取的明顯比1多,這個方法保證了 同一時刻伺服器只會發一條訊息給消費者。

channel.basicconsume(queue, autoack, callback);昨天我們第二個引數填的是true,  只要訊息從佇列中獲取,無論消費者獲取到訊息後是否成功訊息,都認為是訊息已經成功消費。

false為手動確認 消費者從佇列中獲取訊息後,伺服器會將該訊息標記為不可用狀態,等待消費者的反饋,如果消費者一直沒有反饋,那麼該訊息將一直處於不可用狀態。**注釋仔細,可以自己測試實際效果。

rabbitMQ的簡單使用

交換機模式 交換機模式2 fanout模式 交換機模式3 headers模式,總結 生產者 製造訊息 消費者 獲取訊息,處理訊息 路由機制 中轉訊息 四種模式 後三種是交換機模式 direct 不需要交換機,直接傳送到指定佇列,一對一 topic 需要key fanout 廣播模式,不需要key h...

RabbitMQ的安裝使用

rabbit mq 是建立在強大的erlang otp平台上,因此安裝rabbitmq之前要先安裝erlang。erlang rabbitmq 命令列 rabbitmq sbin 使用rabbitmq plugins.bat list檢視已安裝的外掛程式列表 使用 rabbitmq plugins....

rabbitmq的基本使用

現在微服務盛行,我們通常會進行解耦,這時候就需要非同步的訊息佇列來幫助各個服務之間解耦 rabbitmq的基本概念有訊息producer 訊息生產者 exchange 交換機 queue 佇列 consumer 消費者 routingkey 圖中的p是producer,即訊息生產者,中簡的serve...