Pattern¶
Pattern Channel is a powerful Redis routing engine. This type of channel
sends messages to consumers by the pattern
specified when they connect to the channel
and a message key.
Scaling¶
If the message key matches the pattern of several consumers, it will be sent to all them. Thus, horizontal scaling by increasing the number of consumer services is not possible only using Redis Pub/Sub.
If you need similar functionality, look towards Redis Streams or other brokers (for example, Nats or RabbitMQ).
Example¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
Consumer Announcement¶
To begin with, we have announced several consumers for two channels *.info*
and *.error
:
8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
Note
Note that handler1
and handler2
are subscribed to the same channel
:
both of these handlers will receive messages.
Message distribution¶
Now the distribution of messages between these consumers will look like this:
await broker.publish("", "logs.info") # handlers: 1, 2
The message 1
will be sent to handler1
and handler2
because they are listening to channel
with the pattern *.info*
await broker.publish("", "logs.error") # handlers: 3
The message 2
will be sent to handler3
because it listens to channel
with the pattern *.error