Producer-Side Message Prioritization via Target Time Queuing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The existing Java Message Service (JMS) prioritization scheme is consumer-based and relative, leading to higher priority messages being processed continuously, causing lower priority messages to languish in the queue and fail to meet service level objectives, even if the application could have processed them later without impacting higher priority messages.
Innovation Solution
Implementing producer-side prioritization by using a command producer to apply priority information to determine target times for commands, which are then queued and processed by a command consumer, allowing for dynamic adjustment of processing times based on priority and system state, thereby converting relative priorities to absolute urgency.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If consumer-based relative prioritization is used (JMS), then higher priority messages can be processed continuously, but lower priority messages will languish in the queue and fail to meet service level objectives
Solution Approach 1:
The patent inverts the traditional consumer-based prioritization approach by implementing producer-side prioritization. Instead of consumers selecting messages from the queue based on priority, the producer assigns target times to messages when creating them. This inversion shifts control from the consumer to the producer, allowing the system to guarantee service level objectives for all priority levels while maintaining high productivity for urgent messages.
Solution Approach 2:
The patent applies preliminary action by having the producer determine and assign target times to messages at the moment of message creation. This preliminary assignment of processing timing allows the system to pre-plan the processing schedule, ensuring that both high and low priority messages receive appropriate attention without requiring complex consumer-side selection logic.
2Reliability
If multiple JMS consumers are run for different priority ranges, then priority-based processing can be improved, but idle threads are created when no messages are available in specific priority ranges
Solution Approach 1:
The patent makes the consumer universal by designing it to handle all priority levels through a single consumer instance. The consumer retrieves messages based on target times assigned by the producer, rather than requiring separate consumers for different priority ranges. This universal approach eliminates idle threads while maintaining accurate priority-based processing, as the single consumer dynamically adapts to the actual message mix in the queue.
3Loss of energy
If a limited number of threads are allocated to process messages in a priority range, then resource usage is controlled, but processing bottlenecks occur when many messages are in the queue
Solution Approach 1:
The patent introduces dynamics by making the message processing schedule flexible and adaptive through target time assignments. The producer assigns target times based on current system state and message priority, allowing the processing rate to dynamically adjust to demand. This dynamic approach enables the system to scale processing throughput when needed while maintaining resource control, eliminating the rigid bottleneck of fixed thread allocation.
Data Source
AI summary
Systems, methods, and computer program products for producer-side prioritization of message processing. Producer-side prioritization of message processing may include receiving an input message according to a messaging protocol for communicating between software components, where the input message comprises message priority information for the input message, producing a command for a next step in the processing flow, the command including a target time determined using the message priority information from the input message, queuing the command in a command queue, selecting the command from the command queue based on a determination that the target time has expired, and processing the command.


