rabbitMQ的Streams


2021年7月,3.9 版才加入的新功能。https://www.rabbitmq.com/changelog.html

(其實一點都不新,kafka都加入10年了吧?)

官網說明 https://www.rabbitmq.com/streams.html

幾個特點(其實就是抄kafka的 stream)

1 持久化

2 append-only(不可變數據)

3 非破壞性消費者語義(non-destructive consumer semantics) 繞嘴。

 

使用場合:

1. 大扇出

   多個消費者 消費同一個隊列的消息的時候。用stream發布1次,就不用管了。反正數據在stream里持久化了 

2. 重放/時間旅行

   發布的時序和持久化

3.大規模日志,性能。

 

但是具體實現上還是區分2種stream-core和steam-plugin

具體參見 https://gist.github.com/Gsantomaggio/149b604113bf9d2e044a0f89531c101f

Core-Stream vs Stream-Plugin

Feature Stream-Core Stream-Plugin
Activation Built-in Must be enabled
Protocol AMQP 0.9.1 RabbitMQ Stream
Client library AMQP 0.9.1 RabbitMQ Stream
Port 5672 5552
Format consume AMQP 0.9.1/1.0 messages consume AMQP 0.9.1/1.0 messages
Sub-Entry batching Not supported Supported
Offset tracking Use external store Built-in server side
Publishing deduplication Not supported Supported
Throughput Hundreds of thousands per second Millions messages per second
TLS Supported Supported

See here for all the clients: https://www.rabbitmq.com/devtools.html

 

簡單說不用plugin的各種0.9.1的客戶端 比如js的stompjs,python的pika,clojure的langohr, 也都是可以declare/publish/subscribe  stream類型的queue的。只不過性能有損失。但是對小規模應用足夠了

 

二 rabbitmq部署

2.1創建rabbitmq.conf

stream.advertised_host = localhost

為了publish到stream,必須聲明這個,因為stream是區分leader的。

2.2dockerfile

FROM rabbitmq:3-management
LABEL purpose = 'stomp for browser js/cljs'

RUN rabbitmq-plugins enable rabbitmq_stream_management rabbitmq_web_stomp 
COPY ./rabbitmq.conf /etc/rabbitmq/rabbitmq.conf

安裝插件,復制配置文件

2.3 docker-compose.yml

version: '3.8'

services:
  rabbitmq-stream:
    restart: always
    build: ./ 
    command: rabbitmq-server
    environment:
      RABBITMQ_ERLANG_COOKIE: SWQOKODSQALRPCLNMEQG
      RABBITMQ_DEFAULT_USER: guest
      RABBITMQ_DEFAULT_PASS: guest
    ports:
      - "15672:15672" # mangerment webpage
      - "5672:5672" #rabbitmq
      - "15674:15674" #web stomp
      - "61613:61613" #stomp
      - "5552:5552" # stream

2.4 啟動

docker-compose up

三 pika (python)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM