Message Sequencing via P-Key-Order Database
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing messaging systems in multiprocessor environments often receive messages out of sequence, leading to processing failures and scalability issues due to dependency on queuing and memory-intensive locking mechanisms, which complicates maintenance and reliability.
Innovation Solution
A method and system that uses a database to identify and maintain the sequence of messages through a P-Key-Order characteristic, ensuring messages are sent in the correct order by determining the status of previous messages and updating accordingly, without relying on threads or affinity, allowing for flexible error handling and scalability.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If messages are locked in an outbound queue to maintain sequence, then message ordering is preserved, but device complexity and memory usage increase
Solution Approach 1:
The patent extracts the sequencing logic from the message transmission system by using a separate sequencing number assignment mechanism. Messages are assigned sequencing numbers independently of their transmission queue position, allowing the queue to operate freely while maintaining ordering through the sequencing numbers attached to each message.
Solution Approach 2:
The patent applies preliminary action by assigning sequencing numbers to messages before they are placed in the outbound queue. This pre-assignment of sequence identifiers allows messages to be transmitted in any order while the receiving system can reconstruct the correct sequence using the pre-assigned numbers, eliminating the need for complex queue-based ordering.
2Reliability
If threads are used to manage message sequencing, then message order is maintained, but productivity decreases due to waiting threads
Solution Approach 1:
The patent replaces the mechanical thread-based waiting system with a data-driven approach using sequencing numbers. Instead of threads blocking until previous messages are processed, the system attaches sequencing numbers to messages and allows parallel processing, with the receiving end reordering messages based on the sequencing numbers rather than waiting for thread availability.
3Reliability
If affinity is implemented between processes and queues, then message sequence is preserved, but ease of operation decreases due to management complexity
Solution Approach 1:
The patent creates a universal sequencing mechanism that works across multiple processes and queues without requiring process-specific affinity rules. The sequencing number assignment and verification system is process-agnostic, allowing any process to handle any message regardless of which queue it came from, simplifying maintenance and operation while preserving sequence integrity.
4Reliability
If ordered queues are used for message transmission, then message order is maintained, but scalability is limited
Solution Approach 1:
The patent segments the ordering function from the queue structure itself. Instead of relying on the queue to enforce ordering, each message is segmented with an individual sequencing number identifier. This allows messages to be distributed across multiple queues and processes while the sequencing numbers enable reassembly in the correct order, providing both ordering and scalability.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
A method of ordering a plurality of messages received from a sender to be sent to a receiver in a sequence based on the dependency of one message on one or more other messages, the method comprising the steps of: receiving one or more messages from a stream of messages and storing them in a database; identifying a characteristic (P-Key-Order) of each message which is common to a group of messages; identifying a message dependency for the messages in the group of messages from a parameter of the message; reviewing a particular stored message in the database to determine if the stored message can be sent by; determining whether the stored message is dependent on a previous message and determining a status of the previous message; updating the status of the stored message based on the status of the previous message; sending the stored message after acknowledgement that the previous message has been sent.