The web application now publishes messages, and a handler listens for them, so the final component I need is a message queue to connect the two. Queues need the same level of availability as the rest of the solution, so they're good candidates for running in Docker containers. In a distributed solution that is deployed on many servers, the queue can be clustered across multiple containers for performance and redundancy.
Your choice of messaging technology depends on the features you need, but there are plenty of options with .NET client libraries. Microsoft Message Queue (MSMQ) is the native Windows queue, RabbitMQ is a popular open source queue that supports durable messaging, and NATS is an open source in-memory queue that is hugely performant.
The high throughput and low latency of NATS messaging makes it a good choice to communicate between...