Fundamentals of a messaging systemOne way versus request/reply patternsMessage typesCommand MessagesEvent MessagesDocument MessagesAsynchronous messaging, queues, and streamsPeer-to-peer or broker-based messagingPublish/Subscribe patternBuilding a minimalist real-time chat applicationImplementing the server sideImplementing the client sideRunning and scaling the chat applicationUsing Redis as a simple message brokerPeer-to-peer Publish/Subscribe with ZeroMQIntroducing ZeroMQDesigning a peer-to-peer architecture for the chat serverUsing the ZeroMQ PUB/SUB socketsReliable message delivery with queuesIntroducing AMQPDurable subscribers with AMQP and RabbitMQReliable messaging with streamsCharacteristics of a streaming platformStreams versus message queuesImplementing the chat application using Redis StreamsTask distribution patternsThe ZeroMQ Fanout/Fanin patternPUSH/PULL socketsBuilding a distributed hashsum cracker with ZeroMQPipelines and competing consumers in AMQPPoint-to-point communications and competing consumersImplementing the hashsum cracker using AMQPDistributing tasks with Redis StreamsRedis consumer groupsImplementing the hashsum cracker using Redis StreamsRequest/Reply patternsCorrelation IdentifierImplementing a request/reply abstraction using correlation identifiersReturn addressImplementing the Return Address pattern in AMQPSummaryExercises