From d62076bf89852aafb48b707dabba928721093695 Mon Sep 17 00:00:00 2001 From: Chris Woodruff Date: Fri, 13 Dec 2024 20:35:46 -0500 Subject: [PATCH] added diagram to chapter 15 --- .../Message-Queue-Architecture-Overview.png | Bin 0 -> 31042 bytes Chapter15/chapter15.md | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 Chapter15/Images/Message-Queue-Architecture-Overview.png diff --git a/Chapter15/Images/Message-Queue-Architecture-Overview.png b/Chapter15/Images/Message-Queue-Architecture-Overview.png new file mode 100644 index 0000000000000000000000000000000000000000..f101328f4d08aad064e19ed7346f41c11fac809e GIT binary patch literal 31042 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

=N+G!M@PBz9K(m>-PDA&&vpC)YSJi(@ZUfmq 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 Queue Architecture Overview + A **message** is the fundamental unit of transmitted data, often formatted as JSON, XML, or binary. It can represent anything from a user's order in an e-commerce system to a notification about a completed task. Queues, on the other hand, serve as the holding area where messages wait to be processed. In many implementations, these queues operate on a first-in, first-out (FIFO) basis, ensuring messages are processed in the order they were sent. However, advanced patterns allow for flexibility, such as prioritizing or distributing specific messages across multiple consumers. The interaction between producers and consumers defines the behavior of a message queue. A **point-to-point** model pairs a single producer with a single consumer, ideal for tasks like job processing. In contrast, a **publish-subscribe** model enables one producer to broadcast messages to multiple subscribers, perfect for scenarios like sending real-time notifications to users. These core patterns empower developers to design robust communication systems tailored to their application's needs. By mastering these foundational concepts, you'll be ready to tackle more advanced topics and see how message queues bring order to the chaos of modern distributed systems.