Lettuce Pub/Sub

Redis Developer Course Redis Technical Support Redis Enterprise Server

Lettuce Pub/Sub

  • Publish connection과 Subscribe connection을 구분해서 사용합니다.
    같은 connection에서 subscribe를 사용하는 중에 publish를 실행하면 아래과 같은 Runtime Error가 발생합니다.
    Command PUBLISH not allowed while subscribed.
    Allowed commands are: [PSUBSCRIBE, QUIT, PUNSUBSCRIBE, SUBSCRIBE, UNSUBSCRIBE, PING]]
  • 일반 연결(StatefulRedisConnection)로 publish 명령을 사용할 수 있으나, Publish connection(StatefulRedisPubSubConnection)으로 사용할 것을 권장합니다.
  • Redis Standalone 일 경우 Application 실행 중 서버가 다운되었다, 다시 시작하면 Lettuce에서 자동으로 subscribe 명령을 다시 실행해서 등록합니다.
  • Master/Replica 구성에서 Subscribe(등록)는 Failover 시 새 마스터에 자동으로 전파(등록)되지 않습니다. 새로 Subscribe(등록)해야 합니다.
  • Sentinel 구성에서 Failover 시 Lettuce가 자동으로 새 마스터에 Subscribe(등록)를 실행합니다.

사용(실행) 순서

  1. http://localhost:8080/pubsubAddListener
    SubConnection -> 리스너(listener)에 RedisPubSubAdapter()을 등록합니다.
    redisSubConn.addListener(new RedisPubSubAdapter<String, String>() { ... }
  2. http://localhost:8080/subscribe/ch01
    SubConnection -> Subscribe 명령(메서드)를 실행합니다.
    redisSubCommands.subscribe(channel);
    [주의] subscribe()를 while(true) 안에 두지 마세요.
    레디스에서 subscribe는 등록하는 것으로 한 번만 실행하면 됩니다.
    소스 코드에 해당 설명이 조금 더 자세히 있습니다.
  3. http://localhost:8080/publish/ch01:Hello
    PubConnection -> Publish 명령(메서드)를 실행합니다.
    redisCommands.publish(channel, message);

1. Java Publish/Subscribe Source

Java Lettuce를 사용한 Publish/Subscribe 명령 사용법입니다.


Publish/Subscribe Source

Redis10_PubSub.java


각 명령(메서드) 별 표시

SUBSCRIBE

PSUBSCRIBE

PUBLISH

PUBSUB channels

PUBSUB numsub

PUBSUB numpat


<< Pipelining Pub/Sub Master/Replica >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.