IP Library Granted Patent US 12,267,284
Granted Patent B2
US 12,267,284 · App. 17/880,075 · Granted Apr 1, 2025

Message broker consumer group versioning

Inventor: Anbusivam S (Bangalore, IN)
Assignee: SAP SE
H04L51/06G06F8/71
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 12,267,284
App. No.
17/880,075
Granted
Apr 1, 2025
Kind
B2
Abstract

In an example embodiment a mechanism for consumer group versioning is introduced. Here, each application runtime provides a version for any consumer group during its deployment and keeps increasing the version whenever there is an enhancement or bug fix. Thus, both the application and the consumer group will have a version. Once it is recognized that a consumer group assigned to partitions in a topic has an outdated consumer group version number (i.e., a consumer group with the same name/application but a later consumer group version number has been registered with the message broker), the old consumer group is disconnected immediately. This allows the message broker to immediately assign partitions to the consumers in the newer consumer group, thus avoiding the aforementioned delays and associated technical problems.

Claims (34)

1. A system comprising:

at least one hardware processor; and

a computer-readable medium storing instructions that, when executed by the at least one hardware processor, cause the at least one hardware processor to perform operations comprising:

receiving a connection request sent from a first application instance of an application to a message broker, the connection request including, for a topic of the message broker, a consumer group identification and a consumer group version number, the consumer group identification identifying a group of message consumers and the consumer group version number indicating a version of the group of message consumers, the consumer group version number being different than a version number assigned to an application to which the group of message consumers is associated, each message consumer of the group of message consumers being microservices;

determining whether the consumer group version number is greater than a last known consumer group version number for the consumer group;

in response to a determination that the consumer group version number is greater than the last known consumer group version number for the consumer group, causing the message broker to disconnect one or more message consumers, including a second application instance of the application, having an older consumer group version number than the consumer group version number of the first application instance; and

causing assignment of one or more message consumers in a consumer group associated with the consumer group identification to one or more partitions of the topic, each partition responsible for serving a different subset of messages posted to the topic, each partition only assigned to a single message consumer at a time, such that messages posted to the topic are served by the message broker to one or more of the one or more message consumers associated with the consumer group identification.

2. The system of claim 1 , wherein the receiving, determining, causing the message broker to disconnect, and the causing assignment are performed by the message broker.

3. The system of claim 1 , wherein the receiving, determining, causing the message broker to disconnect, and the causing assignment are performed by an extension of the message broker.

4. The system of claim 1 , wherein the receiving, determining, causing the message broker to disconnect, and the causing assignment are performed by a component separate and distinct from the message broker.

5. The system of claim 4 , wherein the causing the message broker to disconnect includes sending a command to the message broker to perform the disconnecting.

6. The system of claim 1 , wherein the first application instance is a microservice.

7. The system of claim 1 , wherein the causing assignment includes using a partitioning scheme.

8. A method comprising:

receiving a connection request sent from a first application instance of an application to a message broker, the connection request including, for a topic of the message broker, a consumer group identification and a consumer group version number, the consumer group identification identifying a group of message consumers and the consumer group version number indicating a version of the group of message consumers, the consumer group version number being different than a version number assigned to an application to which the group of message consumers is associated, each message consumer of the group of message consumers being microservices;

determining whether the consumer group version number is greater than a last known consumer group version number for the consumer group;

in response to a determination that the consumer group version number is greater than the last known consumer group version number for the consumer group, causing the message broker to disconnect one or more message consumers, including a second application instance of the application, having an older consumer group version number than the consumer group version number of the first application instance; and

causing assignment of one or more message consumers in a consumer group associated with the consumer group identification to one or more partitions of the topic, each partition responsible for serving a different subset of messages posted to the topic, each partition only assigned to a single message consumer at a time, such that messages posted to the topic are served by the message broker to one or more of the one or more message consumers associated with the consumer group identification.

9. The method of claim 8 , wherein the receiving, determining, causing the message broker to disconnect, and the causing assignment are performed by the message broker.

10. The method of claim 8 , wherein the receiving, determining, causing the message broker to disconnect, and the causing assignment are performed by an extension of the message broker.

11. The method of claim 8 , wherein the receiving, determining, causing the message broker to disconnect, and the causing assignment are performed by a component separate and distinct from the message broker.

12. The method of claim 11 , wherein the causing the message broker to disconnect includes sending a command to the message broker to perform the disconnecting.

13. The method of claim 8 , wherein the first application instance is a microservice.

14. The method of claim 8 , wherein the causing assignment includes using a partitioning scheme.

15. A non-transitory machine-readable medium storing instructions which, when executed by one or more processors, cause the one or more processors to perform operations comprising:

receiving a connection request sent from a first application instance of an application to a message broker, the connection request including, for a topic of the message broker, a consumer group identification and a consumer group version number, the consumer group identification identifying a group of message consumers and the consumer group version number indicating a version of the group of message consumers, the consumer group version number being different than a version number assigned to an application to which the group of message consumers is associated, each message consumer of the group of message consumers being microservices;

determining whether the consumer group version number is greater than a last known consumer group version number for the consumer group;

in response to a determination that the consumer group version number is greater than the last known consumer group version number for the consumer group, causing the message broker to disconnect one or more message consumers, including a second application instance of the application, having an older consumer group version number than the consumer group version number of the first application instance; and

causing assignment of one or more message consumers in a consumer group associated with the consumer group identification to one or more partitions of the topic, each partition responsible for serving a different subset of messages posted to the topic, each partition only assigned to a single message consumer at a time, such that messages posted to the topic are served by the message broker to one or more of the one or more message consumers associated with the consumer group identification.

16. The non-transitory machine-readable medium of claim 15 , wherein the receiving, determining, causing the message broker to disconnect, and the causing assignment are performed by the message broker.

17. The non-transitory machine-readable medium of claim 15 , wherein the receiving, determining, causing the message broker to disconnect, and the causing assignment are performed by an extension of the message broker.

18. The non-transitory machine-readable medium of claim 15 , wherein the receiving, determining, causing the message broker to disconnect, and the causing assignment are performed by a component separate and distinct from the message broker.

19. The non-transitory machine-readable medium of claim 18 , wherein the causing the message broker to disconnect includes sending a command to the message broker to perform the disconnecting.

20. The non-transitory machine-readable medium of claim 15 , wherein the first application instance is a microservice.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2022
From: S, ANBUSIVAM
To: SAP SE
Reel/Frame 060709/0286 →
Continuity (1)
Related Publication 20240048512A1 · Feb 8, 2024
References Cited (37)
US 7779406B2 · Blanding et al. · 2010 [cited by applicant]
US 9256424B1 · Kuchibhotla · 2016 [cited by examiner]
US 9807143B2 · Braudes · 2017 [cited by examiner]
US 11029940B2 · Peschansky · 2021 [cited by examiner]
US 11050848B2 · Nucci · 2021 [cited by examiner]
US 11074066B2 · Shin · 2021 [cited by examiner]
US 11206185B2 · Sarood et al. · 2021 [cited by applicant]
US 11496577B2 · Acharya · 2022 [cited by examiner]
US 11650813B2 · Moondhra · 2023 [cited by examiner]
US 20080244613A1 · Parthasarathy et al. · 2008 [cited by applicant]
US 20160026699A1 · Tian · 2016 [cited by examiner]
US 20190227781A1 · Ramasamy et al. · 2019 [cited by applicant]
US 20190362015A1 · Sankar et al. · 2019 [cited by applicant]
US 20200153888A1 · Lazu · 2020 [cited by applicant]
US 20220021652A1 · Moghe et al. · 2022 [cited by applicant]
US 20220078248A1 · Upton et al. · 2022 [cited by applicant]
US 20230140409A1 · Kaitha · 2023 [cited by examiner]
US 20230142108A1 · Iyer et al. · 2023 [cited by applicant]
US 20240048610A1 · S · 2024 [cited by applicant]
CN 106375200A · 2017 [cited by applicant]
CN 109788026A · 2019 [cited by applicant]
CN 113031986A · 2021 [cited by applicant]
CN 113918364A · 2022 [cited by applicant]
“KIP-584: Versioning scheme for features”, Kowshik, [Online]. Retrieved from the Internet: <URL: https://cwiki.apache.org/confluence/display/KAFKA/KIP-584%3A+Versioning+scheme+for+features>, (Oct. 30, 2020), 17 pgs. [cited by applicant]
“Managing Apache Kafka”, Cloudera Runtime, [Online]. Retrieved from the Internet: <URL: https://docs.cloudera.com/runtime/7.2.1/kafka-managing/kafka-managing.pdf>, (Dec. 18, 2019), 30 pgs. [cited by applicant]
“Multi-Tenant Apache Kafka for Hops”, Misganu Dessalegn Muruts, [Online]. Retrieved from the Internet: <URL: http://kth.diva-portal.org/smash/get/diva2:1091136/FULLTEXT01.pdf>, (Nov. 15, 2016), 70 pgs. [cited by applicant]
Canas, Cesar, et al., “Self-Evolving Subscriptions for Content-Based Publish/Subscribe Systems”, IEEE 37th International Conference on Distributed Computing Systems, [Online]. Retrieved from the Internet: <URL: http://m… [cited by applicant]
Goldstein, Jonathan, et al., “A.M.B.R.O.S.I.A: Providing Performant Virtual Resiliency for Distributed Applications”, Proceedings of the VLDB Endowment, vol. 13, Issue 5, [Online]. Retrieved from the Internet: <URL: htt… [cited by applicant]
Kra, Yonatan, “Handling Different Kafka Message Versions”, [Online]. Retrieved from the Internet: <URL: https://yonatankra.com/handling-different-kafka-message-versions/ >, (Jun. 30, 2020), 3 pgs. [cited by applicant]
Narkhede, Neha, et al., “Kafka Consumers: Reading Data from Kafka”, [Online]. Retrieved from the Internet: < URL: https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html>, (Accessed Jul. 27, 20… [cited by applicant]
Rooney, Sean, et al., “Kafka: the Database Inverted, but Not Garbled or Compromised”, IEEE International Conference on Big Data (Big Data), [Online]. Retrieved from the Internet: <URL: https://ieeexplore.ieee.org/stamp/… [cited by applicant]
“U.S. Appl. No. 17/880,034, Examiner Interview Summary mailed Apr. 29, 2024”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 17/880,034, Non Final Office Action mailed Mar. 26, 2024”, 12 pgs. [cited by applicant]
“U.S. Appl. No. 17/880,034, Response filed May 16, 2024 to Non Final Office Action mailed Mar. 26, 2024”, 11 pgs. [cited by applicant]
U.S. Appl. No. 17/880,034, filed Aug. 3, 2022, Disconnection of Message Broker Consumer Groups of Prior Application Versions. [cited by applicant]
“U.S. Appl. No. 17/880,034, Final Office Action mailed Sep. 5, 2024”, 12 pgs. [cited by applicant]
“U.S. Appl. No. 17/880,034, Examiner Interview Summary mailed Oct. 25, 2024”, 2 pgs. [cited by applicant]