DETAILED ACTION
Status of the Claims
Claims 1-6, 9-13, 15-19, and 21-24 are pending. Claims 7, 8, 14, and 20 have been canceled. No claims have been withdrawn. No claims have been objected to. Claims 1-3, 5, 9, 10, 12, 15, 16, 18, and 19 have been amended. No claims have been identified as allowable. Claims 1-6, 9-13, 15-19, and 21-24 are rejected under 35 U.S.C. § 103.
Other Prior Art
Fu (US 9,203,896 B2) discloses selecting a minimum required time from a plurality of required times as a target required time, starting a timer, and using expiration of the target required time as a trigger for data interaction (col. 4, lines 31-49).
Yin (US 5,926,458) discloses identifying a queue service time associated with each of a plurality of queues and servicing the queue having the minimal queue service time (col. 7, lines 44-60).
Claim Rejections - 35 U.S.C. § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1, 2, 4, 5, 9, 11, 12, 15, 17, 18, and 21 are rejected under 35 U.S.C. § 103 as being unpatentable over Flockhart et al. (US 7,500,241 B1; “Flockhart”) in further view of Ogus et al. (US 6,964,046 B1; “Ogus”) and the non-patent literature entitled “timeout.c - Tickless hierarchical timing wheel” (“timeout.c”).
Regarding claims 1, 9, and 15, Flockhart teaches or suggests a method for message orchestration using messaging queue, the method comprising:
creating … a sequence of delay queues. Scheduler system (108) includes primary delta queue (124) and 1 to n secondary scheduling arrays (128a, 128b, 128n), through which tasks progress until delivery to resource (112) (col. 3, lines 6-19; fig. 1).
The creating operation is performed by at least one hardware processor. Processor (208) executes application programs in data storage (204) that implement scheduler system (108) and queues (120) (col. 3, lines 41-52; fig. 2).
each delay queue defining a time range of a plurality of time ranges. Flockhart partitions delivery times among delta queue (124), first secondary array (128a), and second secondary array (128b) by successive thresholds: below the primary threshold maps to 124, between the primary and first-secondary thresholds maps to 128a, and between the first- and greater second-secondary thresholds maps to 128b, defining successive bounded ranges. Flockhart also expressly describes a first array-based scheduler maintaining items scheduled for delivery at a time falling between a first period of time and a second period of time (col. 2, lines 19-25; col. 3, lines 6-19; col. 4, lines 23-65; col. 5, lines 1-23; figs. 1, 3A).
the plurality of time ranges each having an upper bound. The primary, first-secondary, and greater second-secondary thresholds respectively form the upper bounds of the ranges mapped to 124, 128a, and 128b (col. 4, lines 23-65; col. 5, lines 1-23; fig. 3A).
the plurality of time ranges each having … a lower bound. Flockhart measures scheduled time as time remaining until delivery, with zero marking expiration from delta queue (124). Zero is therefore the lower bound of 124; the primary threshold is the lower bound of 128a; and the first-secondary threshold is the lower bound of 128b (col. 4, lines 17-65; col. 5, lines 1-23; claims 5, 8; fig. 3A).
assigning messages to the sequence of delay queues based on target delivery times of the messages. Flockhart’s tasks or events correspond to the claimed messages because each is a discrete item received from task generator (104), queued by scheduler system (108) for scheduled delivery, and delivered to resource (112). Flockhart assigns each mapped message by successive threshold comparisons to 124, 128a, or 128b according to its scheduled-delivery time (col. 3, lines 6-19; col. 4, lines 14-65; col. 5, lines 1-23; figs. 1, 3A).
the target delivery times of the messages falling within the plurality of time ranges. Those comparisons place each task in 124, 128a, or 128b according to whether its scheduled-delivery time falls within the corresponding bounded range identified above (col. 4, lines 23-65; col. 5, lines 1-23; fig. 3A).
However, Flockhart does not teach or suggest determining, for each respective delay queue in the sequence of delay queues, a time difference between a target delivery time of a message within the respective delay queue and the lower bound of the respective delay queue. Nonetheless, Ogus teaches or suggests storing the difference from a delay-queue lower bound: the first supplementary array represents 4000 ms to 4,004,000 ms, and for an event at 5768 ms in the array’s first 4000-8000 ms cell, Ogus stores 1768 = 5768-4000, so the subtraction uses the lower bound of both the cell and the supplementary array (col. 9, lines 1-13).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system of Flockhart so that the scheduler determines, for the next task in each scheduler queue, the time from that queue’s lower bound to the task’s scheduled-delivery time, as taught by Ogus, because doing so would provide a queue-relative interval for determining when each bounded scheduler queue next requires processing using Flockhart’s per-array register mechanism.
Further, the combination of Flockhart and Ogus does not teach or suggest assigning, as a time delay, a lowest value among the time differences. Nonetheless, timeout.c teaches or suggests computing a candidate interval for each wheel with pending events, updating a single timeout using MIN(_timeout, timeout), and returning the selected minimum as the wait interval. Applying that minimum-selection operation to the queue-relative differences determined above assigns their lowest value as the time delay (timeout.c, pg. 8, lines 36-49; pg. 9, lines 1-8, 10-18).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system of Flockhart and Ogus so that the scheduler waits for the lowest respective time difference, as taught by timeout.c, because doing so would defer processing until the earliest queue requires it.
The combination of Flockhart, Ogus, and timeout.c further teaches or suggests moving a first message of the messages from at least one delay queue in the sequence of delay queues based on passage of the time delay. Flockhart supplies the scheduler queues and movement conditions set out below, Ogus supplies the queue-relative difference operation (Ogus, col. 9, lines 1-13), and timeout.c selects the lowest such difference as the time delay (timeout.c, pg. 9, lines 1-8, 10-18). If the selected lowest difference belongs to the next task in delta queue (124), passage of that interval reaches expiration and Flockhart delivers the task to resource (112) (Flockhart, col. 5, lines 30-38). Alternatively, if it belongs to the next task in 128a relative to that queue’s lower bound, passage of the interval reaches the primary-queue threshold, and Flockhart moves the task from 128a to 124 when its stored time is less than or equal to that threshold (Flockhart, col. 5, lines 39-54; col. 9, lines 1-3).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the system of Flockhart, Ogus, and timeout.c so that passage of the selected interval causes the next task in the corresponding scheduler queue to be moved as taught by Flockhart, because doing so would process the task when its queue next requires processing.
Regarding claim 2, the combination of Flockhart, Ogus, and timeout.c teaches or suggests the method of claim 1, and Flockhart further teaches or suggests moving a second message to a second delay queue from a third delay queue based on the passage of the time delay. After the selected interval, FIG. 3B checks the next task in 128b and, when its timer is below the 128a threshold, promotes it from 128b, the mapped third delay queue, to 128a, the mapped second delay queue (col. 5, lines 55-67; col. 6, lines 1-3; fig. 3B).
Flockhart further teaches or suggests moving a third message to the third delay queue from a fourth delay queue based on the passage of the time delay. In the same post-delay pass, Flockhart promotes the next task from 128n to 128b when its timer falls below the 128b threshold (col. 6, lines 4-17). Flockhart places a task in 128n when its scheduled time is not less than the 128b threshold, making that threshold the lower bound of 128n; the last secondary queue is not required to have an associated maximum threshold, and each provided queue may have a different threshold time to segment tasks according to their time values. In a bounded implementation consistent with those disclosures, 128n has an upper threshold, and 128n and 128b map to the fourth and third delay queues, respectively (col. 5, lines 17-24; Abstract).
Flockhart further teaches or suggests moving the first message from a first delay queue to a recipient based on the passage of the time delay. In that post-delay pass, an expired next task in delta queue (124), the mapped first delay queue, is delivered to resource (112), the recipient (col. 5, lines 30-38; fig. 3B).
Regarding claims 4, 11, and 17, the combination of Flockhart, Ogus, and timeout.c teaches or suggests the method of claim 1, and Flockhart further teaches or suggests wherein the sequence of delay queues has a first delay queue. Primary queue (124) may comprise the delta queue mapped to the first delay queue (col. 3, lines 6-19; fig. 1).
Flockhart further teaches or suggests wherein the sequence of delay queues has … a second delay queue. The scheduler queues also include first secondary scheduling array (128a), mapped to the second delay queue (col. 3, lines 6-19; fig. 1).
Regarding claims 5, 12, and 18, the combination of Flockhart, Ogus, and timeout.c teaches or suggests the method of claim 4, and Flockhart further teaches or suggests the second delay queue includes a plurality of messages. In FIGS. 4H-4J, tasks 404g, 404h, and 404i are loaded into array-based secondary scheduler queue (128), corresponding to mapped second delay queue 128a, providing the claimed plurality (col. 7, lines 38-60; figs. 4H-4J).
Flockhart further teaches or suggests the first message is a first logical message in the plurality of messages. Under the inherited selected-delay modification for secondary queue (128a), task 404h is physically second in secondary queue (128) without reordering, but its lower time value than earlier-loaded 404g causes register (416) to identify 404h as the next scheduled task, making 404h the first logical message despite its second physical array position (col. 7, lines 45-55).
Flockhart further teaches or suggests the first logical message is moved before other messages in the plurality of messages. Because 404h has a lower time value than 404g and 404i has a greater time value than the other queued tasks, register (416) identifies 404h as the next scheduled task; when the register reaches the next-queue threshold, Flockhart scans for and promotes that lowest-time-value task while 404g and 404i remain in the queue (col. 7, lines 45-60; col. 9, lines 1-8).
Regarding claim 21, the combination of Flockhart, Ogus, and timeout.c teaches or suggests the method of claim 1, and Flockhart further teaches or suggests that the first message is moved by skipping the first message over a preceding message. Task 404g is loaded before 404h and no array reordering occurs, yet register (416) identifies lower-time-value 404h as next; when the threshold is reached, the scheduler scans for and promotes 404h while 404g remains earlier in the array. Under the inherited selected-delay modification, passage of 404h’s selected queue-relative delay causes that selective promotion (col. 7, lines 38-55; col. 9, lines 1-8; fig. 4I).
Flockhart further teaches or suggests the preceding message … is positioned nearer a head end of a delay queue than the first message. Task 404g occupies an earlier position than 404h in secondary queue (128). Flockhart expressly states that an array-based scheduler maintains tasks in received order and appends each new task to the end, so 404g’s earlier position is nearer the head end of the receive-order array than 404h’s later position (col. 4, lines 23-65; col. 7, lines 38-55; fig. 4I).
Flockhart further teaches or suggests wherein the preceding message remains in the delay queue after the first message is moved. Task 404h has a lower time value than earlier-positioned 404g, so register (416) identifies 404h as the next scheduled task (col. 7, lines 50-55). When that next scheduled task is promoted, Flockhart adjusts the timers of the remaining tasks, leaving 404g in the delay queue after 404h is moved (col. 9, lines 1-8).
Claims 3, 10, and 16 are rejected under 35 U.S.C. § 103 as being unpatentable over Flockhart, Ogus, and timeout.c, as applied to claims 2, 9, and 15 above, in further view of Ziegler (US 9,112,820 B2; “Ziegler”).
Regarding claims 3, 10, and 16, the combination of Flockhart, Ogus, and timeout.c teaches or suggests the method of claim 2, but does not teach or suggest wherein the first message, the second message, and the third message are moved simultaneously. Nonetheless, the combination of Flockhart and Ziegler teaches or suggests the added timing relationship: Flockhart supplies the three movements mapped for claim 2, while Ziegler teaches processing each delay queue upon each counter increment using respective comparator modules and can execute many operations between counter increments; at counter 1051, Ziegler de-queues completed descriptors from 310-1, moves descriptor 316 from 310-2 to 310-1, and moves descriptor 323 from 310-4 to 310-3 before the counter increments again (Ziegler, col. 3, lines 26-33, 34-60; col. 4, lines 47-65; col. 6, lines 53-67; col. 7, lines 1-8, 25-31; fig. 3).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system of Flockhart, Ogus, and timeout.c so that the corresponding Flockhart promotions and delivery are performed in response to the same counter increment, as taught by Ziegler, because doing so would update the applicable queues from a single advancement of time before the next increment.
Claims 6, 13, and 19 are rejected under 35 U.S.C. § 103 as being unpatentable over Flockhart, Ogus, and timeout.c, as applied to claims 4, 11, and 17 above, in further view of Li et al. (US 2013/0304826 A1; “Li”).
Regarding claims 6, 13, and 19, the combination of Flockhart, Ogus, and timeout.c teaches or suggests the method of claim 4, and Flockhart further teaches or suggests the second delay queue includes a second plurality of messages. FIGS. 4H-4J show tasks 404g, 404h, and 404i loaded into array-based secondary scheduler queue (128), corresponding to mapped second delay queue 128a, providing the second plurality (col. 7, lines 38-60; figs. 4H-4J).
However, the combination of Flockhart, Ogus, and timeout.c does not teach or suggest forming a group of messages having ones of the second plurality of messages. In FIG. 3B, Flockhart promotes the next task individually. FIG. 5E separately reports that tasks 404g and 404h have been moved from secondary queue (128) to primary queue (124), without disclosing that they were first formed into a group for movement (Flockhart, col. 5, lines 39-67; col. 6, lines 1-17; col. 8, lines 36-49; figs. 3B, 5E). Nonetheless, Li teaches or suggests forming batches of messages that can be activated together, including messages with common or nearby scheduled-delivery times or a common message entity or queue ([0073]-[0074]).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system of Flockhart, Ogus, and timeout.c so that messages in Flockhart’s secondary scheduler queue are formed into a batch, as taught by Li, because doing so would improve resource utilization with little sacrifice in activation latency.
The combination of Ogus, timeout.c, and Li further teaches or suggests moving the group of messages based on the passage of the time delay. Ogus supplies the queue-relative difference operation (Ogus, col. 9, lines 1-13), timeout.c selects the lowest such difference as the time delay (timeout.c, pg. 9, lines 1-8, 10-18), and Li supplies grouped-message movement: when activation agent (306) runs, it identifies messages whose scheduled delivery times have arrived or passed and moves the determined batch from scheduled sub-queue (316) to active sub-queue (318) (Li, [0076], [0089]-[0090]).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the system of Flockhart, Ogus, timeout.c, and Li so that Li’s activation agent moves the determined batch from the scheduled sub-queue to the active sub-queue when the selected interval reaches the applicable processing time, because doing so would retain Li’s resource-utilization benefit while moving the batch at that processing time.
Claim 22 is rejected under 35 U.S.C. § 103 as being unpatentable over Flockhart, Ogus, and timeout.c, as applied to claim 1 above, in further view of Kwong et al. (US 2019/0349319 A1; “Kwong”).
Regarding claim 22, the combination of Flockhart, Ogus, and timeout.c teaches or suggests the method of claim 1, but does not teach or suggest wherein a number of delay queues in the sequence of delay queues is determined based on a historic volume of message traffic between a producer and a consumer. Nonetheless, the combination of Flockhart and Kwong teaches or suggests Flockhart’s scheduler system may comprise 1 to n secondary scheduler queues, while Kwong uses message queues for asynchronous communication from a sender, such as application (110), to a receiver, such as processing logic implemented by processing node (140), and provisions an additional queue when a wildcard queue stores at least a threshold number of messages received within a particular timeframe; because those counted messages have already been received when the provisioning determination is made, the threshold count is a historic volume of producer-to-consumer message traffic used to select how many of Flockhart’s secondary scheduler queues are provided (Flockhart, col. 3, lines 6-19; Kwong, [0023], [0060]).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system of Flockhart, Ogus, and timeout.c so that the number of Flockhart’s secondary scheduler queues is selected using Kwong’s threshold number of messages received within a particular timeframe, as taught by Kwong, because doing so would reduce the number of tasks handled in individual queue operations and thereby reduce processor load as message volume increases.
Claim 23 is rejected under 35 U.S.C. § 103 as being unpatentable over Flockhart, Ogus, and timeout.c, as applied to claim 1 above, in further view of Halim (US 2019/0266026 A1; “Halim”).
Regarding claim 23, the combination of Flockhart, Ogus, and timeout.c teaches or suggests the method of claim 1, but does not teach or suggest wherein the sequence of delay queues is implemented on a distributed messaging queue platform. Nonetheless, the combination of Flockhart and Halim teaches or suggests Flockhart’s sequence of scheduler queues (120), including primary scheduler queue (124) and secondary scheduler queues (128), implemented using Halim’s distributed queueing system that manages delayed queues, which can place a payload on a queue for emission at a specified future time (Flockhart, col. 3, lines 6-19; Halim, [0024]).
The combination of Flockhart and Halim further teaches or suggests different delay queues of the sequence of delay queues are distributed among different nodes of the distributed messaging queue platform. Flockhart supplies distinct scheduler queues for different scheduled-time ranges, while Halim distributes virtual partitions over many hosts and uses lower-priority virtual partitions for timers with far-future expiration times and higher-priority virtual partitions for timers with near-future expiration times; implementing respective Flockhart scheduler queues using respective Halim virtual partitions distributes different time-range scheduler queues among different hosts (Flockhart, col. 2, lines 19-29; Flockhart, col. 3, lines 6-19; Halim, [0045]).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system of Flockhart, Ogus, and timeout.c so that Flockhart’s scheduler queues are implemented using Halim’s virtual partitions distributed over physical hosts, as taught by Halim, because doing so would distribute the work needed to process expiring queue items and allow processing capacity to scale up and down with demand.
Claim 24 is rejected under 35 U.S.C. § 103 as being unpatentable over Flockhart, Ogus, and timeout.c, as applied to claim 1 above, in further view of Healey (US 5,548,760; “Healey”).
Regarding claim 24, the combination of Flockhart, Ogus, and timeout.c teaches or suggests the method of claim 1, but does not teach or suggest storing the messages, prior to assigning the messages to the sequence of delay queues, in a message queue. Nonetheless, Healey teaches or suggests that when a source process has a message to send, the message handler adds the message to a message queue, storing the message before it is subsequently retrieved from the queue (claims 1-2).
Healey further teaches or suggests the message queue having a head end. Message queue (24) includes a head pointer identifying the head of its linked list (col. 3, lines 66-67; col. 4, line 1).
Healey further teaches or suggests the message queue having … a tail end. Message queue (24) includes a tail pointer identifying the tail of the linked list (col. 3, lines 66-67; col. 4, line 1).
Healey further teaches or suggests that the storing operation described above is performed in an order in which the messages are received. The entries in message queue (24) are arranged chronologically by waiting time, with the oldest message at the head and newly received messages added at the tail, preserving the order in which the messages are received (col. 4, lines 1-7, 24-27).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system of Flockhart, Ogus, and timeout.c so that tasks received from Flockhart’s task generator are first stored in Healey’s head-and-tail message queue in chronological reception order, with Flockhart’s scheduler receiving the queued tasks as the destination process, before the tasks are supplied to Flockhart’s scheduler for placement, as taught by Healey, because doing so would preserve arrival order while allowing received messages to await scheduler processing.
Further, the combination of Flockhart and Healey teaches or suggests wherein the messages are assigned to the sequence of delay queues in the order in which the messages are stored in the message queue. Healey’s receive-order message queue mapped above is scanned from the head to locate the earliest queued message for a destination process requesting messages (Healey, col. 4, lines 45-57). In the modified system, Flockhart’s scheduler receives the queued tasks as that destination process, so the earliest-stored task for the scheduler is supplied before later-stored tasks for the scheduler. Flockhart receives each supplied task, assigns it to one of its scheduler queues using the successive scheduled-time threshold comparisons, and then repeats the assignment procedure for the next received task (Flockhart, col. 4, lines 23-65; col. 5, lines 1-29; fig. 3A).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the system of Flockhart, Ogus, timeout.c, and Healey so that Flockhart’s scheduler processes the earliest queued task supplied from the head of Healey’s message queue through Flockhart’s scheduled-time threshold placement before processing a later queued task for that scheduler, because doing so would preserve Healey’s chronological message ordering through the scheduler-assignment operation.
Conclusion
Applicant’s amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any extension fee pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to Andrew Georgandellis whose telephone number is 571-270-3991. The examiner can normally be reached on Monday through Friday, 7:30-5:00 PM EST. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Tonia Dollinger, can be reached on 571-272-4170. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding application status may be obtained from Patent Center; unpublished application information is available there to authorized users. Questions about access to the USPTO patent electronic filing system may be directed to the Electronic Business Center (EBC) at 866-217-9197 (toll-free).
/ANDREW C GEORGANDELLIS/Primary Examiner, Art Unit 2459