RabbitMQ推出類似Kafka的流Stream
RabbitMQ 3.9 引入了一種新型資料結構:流。Streams 解鎖了一組用例,使用“傳統”佇列實現這些用例可能很乏味。讓我們在這篇文章中發現流如何擴充套件 RabbitMQ 的功能。
RabbitMQ 流使用非破壞性消費語義對僅附加日誌進行建模。這意味著——與 RabbitMQ 中的傳統佇列相反——從流中消費不會刪除訊息。
RabbitMQ 中的流是持久化和複製的。這轉化為資料安全性和可用性(在節點丟失的情況下),以及擴充套件(從不同節點讀取相同的流)。
與非常通用的佇列相比,流看起來有點固執己見,但它們在一組用例中派上用場。它們以一種非常好的方式擴充套件了 RabbitMQ 的功能。
RabbitMQ Streams 在以下用例中大放異彩:
- 大扇出:許多應用程式需要讀取相同的訊息(對於傳統佇列,這將需要為每個應用程式宣告一個佇列並將相同訊息的副本傳遞給每個應用程式)
- 大積壓:流將訊息儲存在磁碟上,而不是記憶體中,因此唯一的限制是磁碟容量
- 重放和時間旅行:消費者可以使用絕對偏移量或時間戳附加流中的任何位置,並且他們可以讀取和重新讀取相同的資料
- 高吞吐量:與傳統佇列相比,流速度超快,快幾個數量級
由於流作為RabbitMQ 3.9 中的核心外掛釋出,您可以將它們與所有現有的 RabbitMQ 功能一起使用。
更具體地瞭解流:
- 由於釋出者確認和釋出者端的訊息重複資料刪除,流提供至少一次保證。
- 流支援伺服器端偏移跟蹤,讓消費者從他們離開的地方重新開始。
- 由於流具有非破壞性語義,因此它們可以增長很多。RabbitMQ Streams 可以根據保留策略,基於大小或年齡自動截斷流。
- 流可以透過專用的、極快的二進位制協議和 AMQP 0.9.1 & 1.0(快速)訪問。
- 由於RabbitMQ 3.9 的核心發行版中附帶的流外掛,流協議是可訪問的。
- RabbitMQ Streams 支援客戶端-伺服器 TLS。
- 可以使用現代的、高度最佳化的Java 客戶端。它使用流協議以獲得更好的效能。它是完整的文件。
- 一個Go客戶端是可用的。
- 還有一個基於Java客戶端的效能工具。是的,它以Docker 映象的形式出現。
相關文章
- 事件流平臺Kafka、Pulsar和RabbitMQ比較 - Picnic事件KafkaMQ
- DDD福音:Zeebe是一個類似Kafka的可擴充套件的分散式事件溯源工作流引擎Kafka套件分散式事件
- Stream流
- 在鴻蒙中實現類似瀑布流效果鴻蒙
- Stream 流模組
- Stream流求和
- java的Stream流學習Java
- Java Stream流使用Java
- java-Stream流Java
- stream流各種
- node.js中的流(stream)Node.js
- 強大的Stream並行流並行
- 此流非彼流——Stream詳解
- Java8——Stream流Java
- Node.js Stream(流)Node.js
- 【重學Java】Stream流Java
- Node.js Stream(流)Node.js
- java 8 特性——stream流Java
- JDK新特性--Stream流JDK
- [Java基礎]Stream流Java
- 流式處理界的新貴 Kafka Stream - Kafka設計解析(七)Kafka
- RabbitMQ和Kafka的高可用叢集原理MQKafka
- 淺析nodejs中的stream(流)NodeJS
- Java8 Stream流的合併Java
- 瞭解nodeJs中的流(stream)NodeJS
- RabbitMQ和Kafka到底怎麼選?MQKafka
- RabbitMQ與Kafka選型對比MQKafka
- Nodejs教程24:Stream流NodeJS
- Java 8 Stream並行流Java並行
- Stream並行流詳解並行
- Nodejs 實踐 -- Stream 流NodeJS
- NODE Stream流總結(1)
- NODE Stream流總結(2)
- Java Stream流操作面試題Java面試題
- 類似gitbook的wiki選擇Git
- mysql類似merge的操作MySql
- 淺談node.js中的stream(流)Node.js
- java 8 Stream,Optional的流庫詳解Java