systems and methods are provided, for use in a messaging subsystem, which supports flow control of messages between producers and consumers. A system can include at least one producer that is operable to send messages in a batch to one or more consumers via at least one destination; and one or more consumers that are operable to process messages received from the at least one producer via the at least one destination. The system can also include a message broker which includes the at least one destination and which manages communications between the at least one producer and the one or more consumers. The message broker includes a flow controller that is operable to monitor a producing rate and a consuming rate, and dynamically adjust a batch size of the batch at the at least one producer based on the producing rate and the consuming rate to communicate the messages more efficiently.
|
1. A system for use in a messaging subsystem, which supports flow control of messages between one or more producer systems operable to send messages in batches having a batch size and a plurality of consumer systems operable to process said messages, the system comprising:
a computer, including a computer readable medium and processor;
a message broker operating on said computer;
wherein the message broker includes at least one destination which receives said messages from said one or more producer systems at a producing rate, and from which said plurality of consumer systems consume said messages at a combined consuming rate, wherein the combined consuming rate comprises consumption of messages by all of said plurality of consumer systems in combination;
wherein the message broker includes a flow controller configured to monitor said producing rate and said combined consuming rate and calculate a calculated ratio of said producing rate and said combined consuming rate; and
wherein the flow controller is configured to send an adjusted batch size indication based on said calculated ratio from said flow controller to said one or more producer to dynamically adjust the batch size for batches of messages sent from said one or more producer to said at least one destination of the message broker.
7. A method for use in a messaging subsystem, which supports flow control of messages between one or more producer systems operable to send messages in batches having a batch size and a plurality of consumer systems, the method comprising:
providing a message broker, executing on a computer including a computer readable medium and processor, wherein the message broker includes at least one destination and a flow controller;
receiving, at the at least one destination, messages in a batch from the one or more producer systems at a producing rate;
providing the messages in the at least one destination to a plurality of consumer systems that consume the messages at a combined consuming rate, wherein said plurality of consumer systems are operable to process the messages received from the one or more producer systems via the at least one destination, and wherein the combined consuming rate comprises consumption of messages by all of said plurality of consumer systems in combination;
managing communications between the one or more producer systems and said plurality of consumer systems using the flow controller, including
monitoring said producing rate and said combined consuming rate using the flow controller of the message broker,
calculating a calculated ratio of said producing rate and said combined consuming rate, and
sending an adjusted batch size indication based on said calculated ratio from said flow controller to said one or more producer systems to dynamically adjust the batch size for batches of messages sent from said one or more producer systems to said at least one destination of the message broker.
13. A non-transitory computer readable storage medium including instructions stored thereon for supporting flow control of messages between one or more producer systems operable to send messages in batches having a batch size and a plurality of consumer systems, which instructions, when executed by one or more computers, causes the one or more computers to perform steps comprising:
providing a message broker, executing on a computer including a computer readable medium and processor, wherein the message broker includes at least one destination and a flow controller;
receiving, at the at least one destination, messages from said one or more producer systems at a producing rate;
providing the messages in the at least one destination to said plurality of consumer systems that consume the messages at a combined consuming rate, wherein the plurality of consumer systems are operable to process the messages received from the one or more producer systems via the at least one destination, and wherein the combined consuming rate comprises consumption of messages by all of said plurality of consumer systems in combination;
managing communications between the one or more producer systems and the plurality of consumer systems using the flow controller, including
monitoring said producing rate and said combined consuming rate using the flow controller of the message broker,
calculating a calculated ratio of said producing rate and said combined consuming rate, and
sending an adjusted batch size indication based on said calculated ratio from said flow controller to said one or more producer systems to dynamically adjust the batch size for batches of messages sent from said one or more producer systems to said at least one destination of the message broker.
2. The system of
3. The system of
4. The system of
the producing rate is determined for the at least one destination based on how many messages have been received from the one or more producer systems over a configurable time period; and
the combined consuming rate is determined for the at least one destination based on how many messages have been consumed by all of said plurality of consumer systems in combination over the configurable time period.
6. The system of
8. The method of
receiving an indication at the message broker from the one or more producer systems that said one or more producer systems has paused from producing messages; and
sending an instruction to resume flow to the one or more producer systems from the message broker wherein the instruction to resume flow includes said adjusted batch size indication.
9. The method of
10. The method of
the producing rate is determined for the at least one destination based on how many messages have been produced by the one or more producer systems over a configurable time period; and
the combined consuming rate is determined for the at least one destination based on how many messages have been consumed by all of said plurality of consumer systems in combination over the configurable time period.
11. The method of
12. The method of
14. The non-transitory computer readable storage medium of
receiving an indication at the message broker from the one or more producer systems that said one or more producer systems has paused from producing messages; and
sending an instruction to resume flow to the one or more producer systems from the message broker wherein the instruction to resume flow includes said adjusted batch size indication.
15. The non-transitory computer readable storage medium of
16. The non-transitory computer readable storage medium of
the producing rate is determined for the at least one destination based on how many messages have been produced by the one or more producer systems over a configurable time period; and
the combined consuming rate is determined for the at least one destination based on how many messages have been consumed by all of the plurality of consumer systems in combination over the configurable time period.
17. The non-transitory computer readable storage medium of
18. The non-transitory computer readable storage medium of
19. The non-transitory computer readable storage medium of
said receiving step comprises receiving, at the at least one destination, messages in a batch from a plurality of producer systems at a producing rate; and
said managing step comprises managing communications between the plurality of producer systems and the plurality of consumer systems using the flow controller, including
sending an adjusted batch size indication based on said calculated ratio from said flow controller to said plurality of producer systems to control the batch size for batches of messages sent from said plurality of producer systems to said at least one destination of the message broker.
20. The method of
said receiving step comprises receiving, at the at least one destination, messages in a batch from a plurality of producer systems at a producing rate; and
said managing step comprises managing communications between the plurality of producer systems and the plurality of consumer systems using the flow controller, including
sending an adjusted batch size indication based on said calculated ratio from said flow controller to said plurality of producer systems to control the batch size for batches of messages sent from said plurality of producer systems to said at least one destination of the message broker.
|
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention is generally related to computer systems and messaging subsystems such as Java Message System (JMS), and is particularly related to systems and methods for flow control in a message subsystem based on message-in/out rates.
Messaging subsystems can be provided as part of a middleware system to enable asynchronous messaging between clients and servers in the system. Typically, messaging subsystems, such as Java Message Service (JMS) generally include message producers, which produce and send messages to a particular destination at a broker, and message consumers, which receive and consume messages from those destinations. Generally, messages are received from a producer at a destination, where the messages are batched and forwarded to any consumers that are configured to receive messages from that destination.
Systems and methods are provided, for use in a messaging subsystem, which supports flow control of messages between producers and consumers. One such system can include a computer, including a computer readable medium and processor. The system can further include at least one producer that is operable to send messages in a batch to one or more consumers via at least one destination; and one or more consumers that are operable to process messages received from the at least one producer via the at least one destination. The system can also include a message broker which includes the at least one destination and which manages communications between the at least one producer and the one or more consumers. The message broker includes a flow controller that is operable to monitor a producing rate and a consuming rate, and dynamically adjust a batch size of the batch at the at least one producer based on the producing rate and the consuming rate to communicate the messages more efficiently between the at least one producer and the one or more consumers.
In the following description, the invention will be illustrated by way of example and not by way of limitation in the figures of the accompanying drawings. References to various embodiments in this disclosure are not necessarily to the same embodiment, and such references mean at least one. While specific implementations are discussed, it is understood that this is done for illustrative purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without departing from the scope and spirit of the invention.
Furthermore, in certain instances, numerous specific details will be set forth to provide a thorough description of the invention. However, it will be apparent to those skilled in the art that the invention may be practiced without these specific details. In other instances, well-known features have not been described in as much detail so as not to obscure the invention.
In accordance with an embodiment, systems and methods are provided, for use in a messaging subsystem, which supports flow control of messages between producers and consumers. One such system can include a computer, including a computer readable medium and processor. The system can further include at least one producer that is operable to send messages in a batch to one or more consumers via at least one destination; and one or more consumers that are operable to process messages received from the at least one producer via the at least one destination. The system can also include a message broker which includes the at least one destination and which manages communications between the at least one producer and the one or more consumers. The message broker includes a flow controller that is operable to monitor a producing rate and a consuming rate, and dynamically adjust a batch size of the batch at the at least one producer based on the producing rate and the consuming rate to communicate the messages more efficiently between the at least one producer and the one or more consumers.
Producers and consumers often produce and consume messages at different rates. For example, if a producer produces messages more quickly than a consumer consumes those messages, then the destination can become overloaded with messages waiting to be consumed. To address this problem, and to communicate messages more efficiently between producers and consumers, systems have implemented flow control which stops the producer from producing additional messages until the current unconsumed messages are below a threshold.
In messaging subsystems, such as Java Message Service (JMS), the rate at which messages are produced is typically independent of the rate at which those messages are ultimately consumed. Generally, flow control can be provided by the message broker using a flow controller, and message production is typically based on a batch size and a system maximum limit. The flow controller can throttle the message producer, i.e., limit the production of messages, until the message consumer has consumed the messages below a threshold. A “resume flow” command can then be sent from the message broker which instructs the message producer to send another batch of messages, and the cycle repeats. However, typically the batch size is not dynamically adjusted based on how fast the producer and consumer are each producing or processing messages.
In accordance with an embodiment, the system can determine a producing rate and a consuming rate. As used herein, the producing rate refers to the rate at which messages are received at a message broker from a producer, and the consuming rate refers to the rate at which messages are consumed from the message broker by a consumer. Viewed from the perspective of the message broker, the producing rate corresponds to a message-in rate, and the consuming rate corresponds to a message-out rate. The system is configured to compare the producing rate and the consuming rate and, based on this comparison, either increase or decrease a message batch size at the producer. Thus, the flow controller can attempt to balance the producing and consuming rates which improves the efficiency of communications between the producers and consumers, and avoids excessive messages backing up at the broker.
In accordance with an embodiment, the broker flow controller is configured so that upon sending the resume flow message to the producer, the current producing and consuming rates are calculated and the message batch size is dynamically adjusted.
For example, if the producing rate is higher than the consuming rate, the producer can reduce the message batch size, by a percentage of the last batch size. Similarly, if the producing rate is lower than the consuming rate, the producer can increase the batch size, by a percentage of the last batch size.
As shown in
In accordance with an embodiment, calculation of the producing rates and consuming rates are triggered based on a number of unconsumed messages at the destination. If the number of unconsumed messages exceeds a threshold number, then the broker flow controller calculates the current producing and consuming rates.
The time period over which the producing and consuming rates is calculated can be preconfigured by an administrator, or can be configured to adapt dynamically depending on the rate at which the producing and consuming rates change. The producing and consuming rates can be calculated using an average rate over the time period, however any other method or methods of calculation of the rates over the time period are also possible.
As noted above, the batch size can be dynamically adjusted at the producer when an instruction to resume flow is received at the producer from the message broker. In accordance with an embodiment, the batch size at the producer can be dynamically adjusted each time the instruction to resume flow is received at the producer.
When the broker flow controller sends “resume flow” messages 422 to the plurality of producers, each resume flow message can include a new batch size for the particular producer to which the message is sent. The particular producer flow controller can then adjust the batch size accordingly, and resume producing messages according to the new batch size. This way, flow control can be implemented in systems having one or more producers and/or one or more consumers.
In accordance with an embodiment, a broker flow controller can provide flow control for a plurality of destinations at a message broker. The broker flow controller can monitor message-in and message-out rates at each of the plurality of destinations and adjust the batch size used by each producer which is producing messages to one or more of the plurality of destinations.
In accordance with an embodiment, the producing rate can be determined for the at least one destination based on how many messages have been produced by the at least one producer over a configurable time period; and the consuming rate can be determined for the at least one destination based on how many messages have been consumed by the one or more consumers over the configurable time period. In accordance with an embodiment, the flow controller can be further operable to dynamically adjust a batch size by calculating a ratio of the consuming rate to the producing rate; and dynamically adjusting the batch size, based on the calculated ratio, to a new batch size, so that subsequent messages from the particular message producer are sent according to the new batch size. Additionally, the new batch size can be determined by multiplying the batch size by the calculated ratio.
In accordance with an embodiment, dynamically adjusting the batch size can comprise sending an instruction to resume flow to the at least one producer from the message broker; and wherein the instruction to resume flow includes a new batch size. Additionally, the batch size at the at least one producer can be dynamically adjusted each time the instruction to resume flow is received at the at least one producer.
In accordance with an embodiment, in the method shown in
The present invention can be conveniently implemented using one or more conventional general purpose or specialized digital computer, computing device, machine, or microprocessor, including one or more processors, memory and/or non-transitory computer readable storage media programmed according to the teachings of the present disclosure. Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will be apparent to those skilled in the software art.
In some embodiments, the present invention includes a computer program product which is a computer readable storage medium (media) having instructions stored thereon/in which can be used to program a computer to perform any of the processes of the present invention. The computer readable storage medium can include, but is not limited to, any type of disk including floppy disks, optical discs, DVD, CD-ROMs, microdrive, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs, flash memory devices, magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.
The foregoing description of the present invention has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations will be apparent to the practitioner skilled in the art. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, thereby enabling others skilled in the art to understand the invention for various embodiments and with various modifications that are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalence.
Kang, Amy H., Bratt, Edward J.
Patent | Priority | Assignee | Title |
10462067, | Jan 26 2017 | International Business Machines Corporation | Proactive channel agent |
10880228, | Jan 26 2017 | International Business Machines Corporation | Proactive channel agent |
10901863, | Nov 09 2016 | International Business Machines Corporation | Unified data layer backup system |
Patent | Priority | Assignee | Title |
6192029, | Jan 29 1998 | Google Technology Holdings LLC | Method and apparatus for performing flow control in a wireless communications system |
6604145, | Nov 09 1999 | GOOGLE LLC | Method and system for controlling information flow in a high frequency digital system from a producer to a buffering consumer via an intermediate buffer and a shared data path |
6789050, | Dec 23 1998 | AT&T Corp | Method and apparatus for modeling a web server |
7293145, | Oct 15 2004 | Veritas Technologies LLC | System and method for data transfer using a recoverable data pipe |
7756910, | May 21 2004 | Oracle International Corporation | Systems and methods for cache and pool initialization on demand |
20060256786, | |||
20070244987, | |||
20080059663, | |||
20090279482, | |||
20100115059, | |||
20100306365, | |||
EP1376952, | |||
JP7013909, | |||
WO2010101650, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jun 14 2011 | KANG, AMY H | Oracle International Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 026475 | /0913 | |
Jun 14 2011 | BRATT, EDWARD J | Oracle International Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 026475 | /0913 | |
Jun 17 2011 | Oracle International Corporation | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Feb 07 2019 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Feb 01 2023 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 18 2018 | 4 years fee payment window open |
Feb 18 2019 | 6 months grace period start (w surcharge) |
Aug 18 2019 | patent expiry (for year 4) |
Aug 18 2021 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 18 2022 | 8 years fee payment window open |
Feb 18 2023 | 6 months grace period start (w surcharge) |
Aug 18 2023 | patent expiry (for year 8) |
Aug 18 2025 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 18 2026 | 12 years fee payment window open |
Feb 18 2027 | 6 months grace period start (w surcharge) |
Aug 18 2027 | patent expiry (for year 12) |
Aug 18 2029 | 2 years to revive unintentionally abandoned end. (for year 12) |