RabbitMQ Stream
docs : https://rabbitmq.github.io/rabbitmq-stream-dotnet-client/stable/htmlsingle/index.html
RabbitMQ Stream .Net Client는 RabbitMQ Stream Plugin과 통신하기 위한 .Net 라이브러리입니다.
Stream 장점
Large fan-outs
- 여러 애플리케이션이 동일한 메시지를 읽어야 할 때 유용합니다.
- 기존의 큐를 사용하면 각 애플리케이션마다 큐를 선언하고 각각에게 동일한 메시지의 복사본을 전달해야 합니다.
- Stream은 여러 소비자가 동일한 큐에서 동일한 메시지를 비파괴적인 방식으로 소비할 수 있도록 해주므로 여러 개의 큐를 바인딩할 필요가 없습니다.
Replay / Time-travelling
- 소비자는 스트림의 어느 지점에서든 절대 오프셋 또는 타임스탬프를 사용하여 연결할 수 있으며 동일한 데이터를 읽고 다시 읽을 수 있습니다.
- 다시 말해서 메시지가 디스크에 저장되므로 언제든지 메시지를 가져와 소비할 수 있습니다.
Throughput Performance
- Stream은 기존의 큐에 비해 몇 배 빠릅니다.(?)
Large logs
- Stream은 메시지를 디스크에 저장합니다.
sample
- 큐 생성
ConnectionFactory factory = new ConnectionFactory();
var connection = factory.CreateConnection();
var channel = connection.CreateModel();
var argument = new Dictionary<string, object> { { "x-queue-type", "stream" } };
//큐 생성
channel.QueueDeclare(
queue: qName1,
durable: false,
exclusive: false,
autoDelete: false,
arguments: argument
);
- stream 설정
- x-max-length-bytes : 스트림의 최대 크기를 바이트 단위로 설정합니다.
- x-max-age : 스트림의 최대 수명을 설정합니다.
- x-stream-max-segment-size-bytes : 스트림은 디스크에서 고정 크기 세그먼트 파일로 나뉩니다. (Default : 500000000 bytes)
'프로그래밍 > RabbitMQ' 카테고리의 다른 글
[RabbitMQ] 클러스터 구성하기 - Linux (0) | 2023.09.05 |
---|---|
[RabbitMQ] 미러링 (0) | 2023.05.03 |
[RabbitMQ] 클러스터링 (0) | 2023.05.03 |
[RabbitMQ] 성능 향상 위한 가이드 (0) | 2023.04.28 |
[RabbitMQ] 메시지 송수신 - RoutingKey (0) | 2023.04.19 |