IP Library Granted Patent US 10,592,314
Granted Patent B2
US 10,592,314 · App. 15/648,483 · Granted Mar 17, 2020

Message queueing in middleware by a message broker

Inventors: William F. Phillips (Endicott, NY); Victor M. Lourenco (Vestal, NY); Patrick J. Clas (Blinghamton, NY)
Assignee: International Business Machines Corporation
G06F9/546G06F2209/541
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,592,314
App. No.
15/648,483
Granted
Mar 17, 2020
Kind
B2
Abstract

A message broker configured to handle messages received from a plurality of client applications comprises a plurality of message queues that are each associated with a different task. A first synchronous message is received at a first message queue from a first client application. A determination is made that at a time the first synchronous message is received there is an earlier-received message from a different client application waiting in the first message queue. In response to the determination, the first synchronous message is coalesced with the earlier-received message such that a task associated with the first message queue is executed only once for both messages and a notice of the execution is returned to the first client application.

Claims (48)

1. A method for using a message broker comprising a plurality of message queues, each message queue associated with a different task of a plurality of tasks, the message broker handling messages received from a plurality of client applications, the method comprising:

receiving, at a first message queue of the plurality of message queues, a first synchronous message from a first client application of the plurality of client applications, wherein the first synchronous message includes a request to execute a task associated with the first message queue;

determining that at a time the first synchronous message is received there is an earlier-received message waiting in the first message queue, wherein the earlier-received message is from a different client application, and wherein the earlier-received message includes a different request to execute the task associated with the first message queue; and

coalescing, in response to the determination, the first synchronous message with the earlier-received message such that the task associated with the first message queue is executed only once for both messages and a notice of the execution is returned to the first client application;

wherein the earlier-received message is also synchronous such that the notice of the execution is also returned to the different client application.

2. The method of claim 1 , further comprising:

receiving, at the first message queue and while the earlier-received message is waiting in the first message queue, a second message;

determining, based on an indicator in the second message, that the second message is not to be coalesced with the earlier-received message; and

placing, in response to the determination based on the indicator, the second message behind with the earlier-received message in the first message queue.

3. The method of claim 1 , wherein the task is a vital product data (VPD) build function, and wherein returned notice of execution includes VPD information.

4. The method of claim 1 , wherein an XML file is used to define each of the plurality of tasks that are to have a separate message queue of the plurality of message queues.

5. The method of claim 4 , further comprising:

generating, by a producer associated with the first client application, the first synchronous message based on the XML file.

6. The method of claim 4 , further comprising:

retrieving, by a consumer associated with the first message queue and after the coalescing, the earlier-received message; and

calling, by the consumer, a plugin for executing the task, wherein the plugin is identified by the consumer based on the XML file.

7. A computer program product comprising a computer readable storage medium, wherein the computer readable storage medium is not a transitory signal per se, the computer readable storage medium having program instructions embodied therewith, the program instructions configured, when executed by at least one computer, to cause the at least one computer to:

receive, at a first message queue of a plurality of message queues, a first synchronous message from a first client application of a plurality of client applications;

determine that at a time the first synchronous message is received there is an earlier-received message waiting in the first message queue, wherein the earlier-received message is from a different client application; and

coalesce, in response to the determination, the first synchronous message with the earlier-received message such that a task associated with the first message queue is executed only once for both messages and a notice of the execution is returned to the first client application;

wherein the earlier-received message is also synchronous such that the notice of the execution is also returned to the different client application.

8. The computer program product of claim 7 , wherein the program instructions are further configured, when executed by the at least one computer, to cause the at least one computer to:

receive, at the first message queue and while the earlier-received message is waiting in the first message queue, a second message;

determine, based on an indicator in the second message, that the second message is not to be coalesced with the earlier-received message; and

place, in response to the determination based on the indicator, the second message behind with the earlier-received message in the first message queue.

9. The computer program product of claim 7 , wherein the task is a vital product data (VPD) build function, and wherein returned notice of execution includes VPD information.

10. The computer program product of claim 7 , wherein an XML file is used to define each of a plurality of tasks that are to have a separate message queue of the plurality of message queues.

11. The computer program product of claim 10 , wherein the program instructions are further configured, when executed by the at least one computer, to cause the at least one computer to:

generate, by a producer associated with the first client application, the first synchronous message based on the XML file.

12. The computer program product of claim 10 , wherein the program instructions are further configured, when executed by the at least one computer, to cause the at least one computer to:

retrieve, by a consumer associated with the first message queue and after the coalescing, the earlier-received message; and

call, by the consumer, a plugin for executing the task, wherein the plugin is identified by the consumer based on the XML file.

13. A system comprising:

a memory; and

a processor in communication with the memory, the processor configured to obtain instructions from the memory that cause the processor to perform a method comprising:

receiving, at a first message queue of a plurality of message queues, a first synchronous message from a first client application of a plurality of client applications;

determining that at a time the first synchronous message is received there is an earlier-received message waiting in the first message queue, wherein the earlier-received message is from a different client application;

coalescing, in response to the determination, the first synchronous message with the earlier-received message such that a task associated with the first message queue is executed only once for both messages and a notice of the execution is returned to the first client application;

receiving, at the first message queue and while the earlier-received message is waiting in the first message queue, a second message;

determining, based on an indicator in the second message, that the second message is not to be coalesced with the earlier-received message; and

placing, in response to the determination based on the indicator, the second message behind with the earlier-received message in the first message queue.

14. The system of claim 13 , wherein the earlier-received message is also synchronous such that the notice of the execution is also returned to the different client application.

15. The system of claim 13 , wherein the task is a vital product data (VPD) build function, and wherein returned notice of execution includes VPD information.

16. The system of claim 13 , wherein an XML file is used to define each of a plurality of tasks that are to have a separate message queue of the plurality of message queues, and wherein the method further comprises:

generating, by a producer associated with the first client application, the first synchronous message based on the XML file.

17. The system of claim 16 , wherein the method further comprises:

retrieving, by a consumer associated with the first message queue and after the coalescing, the earlier-received message; and

calling, by the consumer, a plugin for executing the task, wherein the plugin is identified by the consumer based on the XML file.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2017
From: PHILLIPS, WILLIAM F.; LOURENCO, VICTOR M.; CLAS, PATRICK J.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 042992/0414 →
Continuity (1)
Related Publication 20190018718A1 · Jan 17, 2019