03 訊息中介軟體RocketMq之順序消費

2021-10-23 23:21:07 字數 1625 閱讀 2569

同乙個topic 有4個佇列

佇列先天支援fifo模型,單一生產和消費者下只要保證使用messagelistenerorderly***即可

保證有序參與因素

順序消費表示訊息消費的順序同生產者為每個訊息佇列傳送的順序一致,所以如果正在處理全域性順序是強制性的場景,需要確保使用的主題只有乙個訊息佇列

並行消費不再保證訊息順序,消費的最大並行數量受每個消費者客戶端指定的執行緒池限制。

那麼只要順序的傳送,再保證乙個執行緒只去消費乙個佇列上的訊息,那麼他就是有序的。

生產者

跟普通資訊相比,順序訊息的使用需要在producer的send()方法中新增messagequeueselector介面的實現類,並重寫select選擇使用的佇列,因為順序訊息區域性順序,需要將所有訊息指定傳送到同一佇列中。

public static void main(string args) throws exception  catch (interruptedexception e) 

// 實現介面

messagequeueselector messagequeueselector = new messagequeueselector()

};message msg0 = new message("mysorttopic001", ("我是訊息" + i + "=>" + localdatetime.now()).getbytes());

// 單個傳送

msg0.putuserproperty("age",string.valueof(i));

sendresult sendresult1 = null;

try catch (mqclientexception e) catch (remotingexception e) catch (mqbrokerexception e) catch (interruptedexception e)

system.out.println("單個傳送" + sendresult1);

}producer.shutdown();

system.out.println("關閉");

}).start();

}

消費

public static void main(string args)throws exception 

// 預設情況下這條訊息只會被乙個consumer消費 點對點的

// message 狀態修改

// ack 確認消費

return consumeorderlystatus.success;

}});

// 設定消費模式,

// clustering 集群模式,只消費一次

// broadcasting 廣播模式 可多次消費

consumer.setmessagemodel(messagemodel.clustering);

consumer.start();

system.out.println("consumer 02 start...");

}

訊息中介軟體 RocketMQ簡介

apache rocketmq是一款具有低延遲,高效能和可靠性,數十億容量和靈活可擴充套件性的分布式訊息傳遞和流 平台。它由nameserver broker producer以及consumer四部分構成,如下圖所示 所有的集群都具有水平擴充套件能力,無單點障礙。nameserver是乙個功能齊全...

訊息中介軟體之RocketMQ

1.rocketmq的三種方式傳送訊息 可靠的同步,可靠的非同步和單向傳輸 1 同步傳送訊息 可靠的同步傳輸,適用於重要的簡訊通知等 2 非同步傳輸通常用於響應時間敏感的業務場景。3 以單向模式傳送訊息 單向傳輸用於需要中等可靠性的情況,例如日誌收集。2.初步了解訊息失敗重試機制 訊息失敗,無非涉及...

訊息中介軟體認知及RocketMQ

訊息中介軟體是目前網際網路服務常用的技術服務。訊息中介軟體為應用系統提供高效 靈活的訊息同步和非同步傳輸處理 儲存 可靠傳輸。在大規模分布式環境下確保訊息安全 可靠 高效送達。一 為什麼需要一款訊息中介軟體 使用訊息伺服器的目的通常是解耦 及錯峰流控。隨著網際網路 微架構 模式的興起,原有的企業級大...