반응형
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);
});
다른 옵션은 동시 처리인데, 이것은 작업이 처리되는 순서에 대해 구체적으로 보장하지 않으며 당신의 코드가 전적으로 동시성 메세지에 대해서 내부 상태에서 충돌이 없도록 책임을 져야 한다. 이를 통해 훨씬 더 빠르고 확장 가능할 수 있으며 이는 메시지가 일반적으로 관련이 없는 경우에 특히 효과적이다.
출처
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
C# StackExchange로 Redis Strings 데이터 구조 사용하기 (0) | 2024.12.02 |
---|---|
레디스(Redis) TTL 설정하기 (0) | 2024.04.23 |
Redis 자료구조(Data Structures) (11) | 2023.05.30 |
C# StackExchange.Redis로 Redis 사용하기 (6) | 2023.05.26 |
C# redis에서 Key들을 pattern으로 조회하기 (28) | 2023.05.25 |
댓글