- 21 Jan 2025
- 6 Minutes to read
- Print
- DarkLight
About Messaging
- Updated on 21 Jan 2025
- 6 Minutes to read
- Print
- DarkLight
Overview
Effective communication is a fundamental requirement with Software Systems. Applications need to exchange information seamlessly and efficiently to meet increasing demands and complexities. Messaging serves as the conduit for data transmission among different software components or systems. While synchronous communication ensures immediate interactions, asynchronous communication enables components to function independently. However, managing asynchronous communication complexity can be challenging. This is where message queues emerge as a solution, optimizing the flow of messages.
Message queues enable asynchronous communication, boosting scalability and reliability. Asynchronous communication frees applications from waiting for immediate responses, which is essential for tasks needing time-consuming processing or when components are briefly unavailable. Message queues act as intermediaries, letting apps deposit messages for later processing. They uncouple sender and receiver, ensure efficient message handling, and guard against traffic spikes.
What changed from V8 to V9?
Version 8 | Version 9 |
---|---|
Message Queues were configured at the System level and were visible across the platform. | Message Queues are now Project-level and are visible only within the Project. |
Message Queues and Decisions
Through modules, Decisions provides support and integration for popular message brokers. These modules allow Decisions to interact with these applications as either a Producer or Consumer and provide other functionalities such as stopping/starting a queue. Below is a list of currently supported and available message queue modules:
Module | Example Use Case | Advantages |
---|---|---|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
Common Message Queue Steps
The following steps were added in the v9.4 release to assist Users with automating parts of the Message Queue Control within Flows and are not Message Queue Module specific.
Common Message Queue Step Glossary
Step Name | Description |
---|---|
Disable Message Queue | This Step prevents the Queue from running even after reboot. |
Enable Message Queue | This Step enables the Message Queue to receive messages. |
Pause Message Queue | This Step temporarily stops the Message Queue from receiving messages. |
Resume Message Queue | This Step resumes the Message Queue so it can continue receiving messages. |
Resync Message Queue | This Step recreates connections and threads. |
Shut Down Message Queue | This Step closes all connections and threads. |
Test Message Queue | This Step tests the connection to the Message Queue. |
Common Message Queue Step Properties
Each common Message Queue step also includes a Boolean Input that enables Users to Broadcast to Cluster. If this checkbox value is false, it will only broadcast the action to the Message Queue on the specific node where the Step was run. If this value is true, it will be broadcast to the message queue on all nodes.
Posting Messages to a Queue
Think of posting messages like sending emails to a virtual inbox. Imagine an app notifying users about a new article. Instead of making users wait, the app posts messages to a queue. Just as emails sit in your inbox until you're ready to read them, messages wait in the queue until they're processed. This way, apps keep running smoothly, users stay engaged, and no one's left waiting.
As a producer, use the Post Message step to send these messages to a connected queue. This allows Flows to be configured and define payloads for messages sent to a queue. These Flows can be added to a scheduled job to run requests on a daily basis.
Message Queue Handlers and Active Flow Count
When utilizing Decisions as a consumer, messages can be processed from a queue by creating a Message Handler. These handlers run on specialized threads, ensuring that each message is given the appropriate attention. Active Flow Count determines the number of concurrent message processors. Increasing this count speeds up message processing but requires more resources. Higher counts boost throughput but may strain the system. Finding the right balance is crucial for optimizing performance and resource utilization. This setting is visible through the desired Designer Folder > Settings > Jobs & Events.
Asynchronous Processing and Scalability
Each message triggers the creation of a dedicated Flow, essentially a set of instructions for handling that specific message. The Active Flow Count controls the maximum number of these Active Flows at any moment. This architecture promotes asynchronous processing, allowing multiple messages to be concurrently handled within a single Decisions instance. The number of active Flows can scale to match the available system resources. For greater processing power, Decisions can be configured in a clustered environment. This setup distributes the processing load across multiple nodes, optimizing message handling similarly to how interval jobs are distributed.
Feature Changes
Description | Version | Release Date | Developer Task |
---|---|---|---|
Message Queue Modules have new steps that help automate queues. | 9.4 | November, 2024 | [DT-039254] |