RabbitMQ tutorial - Topics
Topics
(using the AMQP 1.0 .NET client)
Prerequisites
This tutorial assumes RabbitMQ is installed and running on
localhost on the standard port (5672). In case you
use a different host, port or credentials, connections settings would require
adjusting.
Where to get help
If you're having trouble going through this tutorial you can contact us through GitHub Discussions or RabbitMQ community Discord.
In the previous tutorial we used a direct exchange to route by a single criterion (severity). Topic exchanges route by patterns in the routing key — useful when messages carry multiple dimensions (for example kern.critical).
The sample declares exchange logs_topic with type topic. The publisher sets the routing key on PublisherBuilder().Exchange(exchangeName).Key(routingKey). The consumer passes one or more binding keys (patterns) on the command line and binds the temporary queue for each.
Topic binding rules:
*substitutes exactly one word.#substitutes zero or more words.- Words are separated by
.in routing keys.
Running
dotnet run --project ReceiveLogsTopic/ReceiveLogsTopic.csproj "kern.*"
dotnet run --project EmitLogTopic/EmitLogTopic.csproj kern.critical "A critical kernel error"
Source
Now we can move on to tutorial 6 to learn about the RPC (request/reply) pattern with RabbitMQ.