Files

39 lines
1.2 KiB
Plaintext

# Pub/Sub: what is delivered, to whom, and what is lost
--- The container Boot created ---
beans of type RedisMessageListenerContainer: [redisMessageListenerContainer]
running=true listening=true
--- Publishing to a channel nobody listens to ---
template.convertAndSend("quiet", "hello?") = 0 receivers
$ redis-cli -p 6390 --no-raw PUBSUB NUMSUB quiet
1) "quiet"
2) (integer) 0
--- Publishing to news, which has an @RedisListener ---
$ redis-cli -p 6390 --no-raw PUBSUB NUMSUB news
1) "news"
2) (integer) 1
template.convertAndSend("news", "first") = 1 receiver
@RedisListener got 'first'
--- A second listener that subscribes late ---
container.addMessageListener(late, new ChannelTopic("news"))
$ redis-cli -p 6390 --no-raw PUBSUB NUMSUB news
1) "news"
2) (integer) 1
template.convertAndSend("news", "second") = 1 receiver
@RedisListener got 'first'
@RedisListener got 'second'
late listener got 'second' on news
--- A pattern subscription (topic = "alerts.*") ---
$ redis-cli -p 6390 --no-raw PUBSUB NUMPAT
(integer) 1
$ redis-cli -p 6390 --no-raw PUBSUB NUMSUB alerts.disk
1) "alerts.disk"
2) (integer) 0
template.convertAndSend("alerts.disk", "90% full") = 1 receiver
@RedisListener got '90% full' on alerts.disk