본문 바로가기
프로그래밍/데이터베이스

StackExchange.Redis Subscribe()로 구독하기

by bantomak 2023. 12. 27.

Subscribe()로 구독하기

해당되는 채널명으로 구독을 설정하면 해당 채널로 오는 메시지를 수신할 수 있다.

 

ISubscriber sub = redis.GetSubscriber();

sub.Subscribe("messages", (channel, message) => {
    Console.WriteLine((string)message);
});

 

Publish()로 발행하기

해당하는 채널명으로 발행하면 원하는 메세지를 발행할 수 있다.

 

sub.Publish("messages", "hello");

 

Pub/Sub 메세지 순서

pub/sub API를 사용할 때 동일한 연결의 메시지를 순차적으로 처리해야하는지 아니면 동시에 처리해야 하는지에 대한 결정을 해야 한다. 가능하다면 동시 처리를 사용하는 것이 좋다.

 

순차적으로 처리한다는 것은 스레드 안정성에 대해 걱정할 필요가 없다는 것을 의미하며 이벤트 순서를 유지한다는 것을 의미한다. 큐를 통해 수신된 순서와 정확히 동일한 순서로 처리되지만 결과적으로 메시지가 서로 지연될 수 있음을 의미한다.

 

순차 처리 예제

var channel = multiplexer.GetSubscriber().Subscribe("messages");
channel.OnMessage(message =>
{
    Console.WriteLine((string)message.Message);
});

 

동시 처리 예제

multiplexer.GetSubscriber().Subscribe("messages", (channel, message) => {
    Console.WriteLine((string)message);
});

 

다른 옵션은 동시 처리인데, 이것은 작업이 처리되는 순서에 대해 구체적으로 보장하지 않으며 당신의 코드가 전적으로 동시성 메세지에 대해서 내부 상태에서 충돌이 없도록 책임을 져야 한다. 이를 통해 훨씬 더 빠르고 확장 가능할 수 있으며 이는 메시지가 일반적으로 관련이 없는 경우에 특히 효과적이다. 

 

출처

 

Pub/Sub Message Order

General purpose redis client

stackexchange.github.io

댓글