Messaging Patterns Explained: Pub-Sub, Queues, and Event Streams