{"id":17438,"date":"2023-10-08T08:12:47","date_gmt":"2023-10-08T07:12:47","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=166771"},"modified":"2023-10-08T08:12:47","modified_gmt":"2023-10-08T07:12:47","slug":"how-to-subscribe-a-kafka-consumer-to-multiple-topics","status":"publish","type":"post","link":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/2023\/10\/08\/how-to-subscribe-a-kafka-consumer-to-multiple-topics\/","title":{"rendered":"How to Subscribe a Kafka Consumer to Multiple Topics"},"content":{"rendered":"<p><img src=\"https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-7-Featured-1024x536.png\" class=\"webfeedsFeaturedVisual wp-post-image\" alt=\"\" decoding=\"async\" style=\"float: left; margin-right: 5px;\" loading=\"lazy\" srcset=\"https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-7-Featured-1024x536.png 1024w, https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-7-Featured-300x157.png 300w, https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-7-Featured-768x402.png 768w, https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-7-Featured-100x52.png 100w, https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-7-Featured.png 1200w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/p>\n<h2 id=\"bd-overview\" data-id=\"overview\">1. Overview<\/h2>\n<div class=\"bd-anchor\" id=\"overview\"><\/div>\n<p><strong>In this tutorial, we&#8217;ll learn how to subscribe a <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/spring-kafka\">Kafka<\/a> consumer to multiple topics.<\/strong> This is a common requirement when the same business logic is used for various topics.<\/p>\n<h2 id=\"bd-create-model-class\" data-id=\"create-model-class\">2. Create Model Class<\/h2>\n<div class=\"bd-anchor\" id=\"create-model-class\"><\/div>\n<p>We&#8217;ll consider a simple payment system with two Kafka topics, one for card payments and the other for bank transfers. Let&#8217;s create the model class:<\/p>\n<pre><code class=\"language-java\">public class PaymentData {\r\n    private String paymentReference;\r\n    private String type;\r\n    private BigDecimal amount;\r\n    private Currency currency;\r\n    \/\/ standard getters and setters\r\n}<\/code><\/pre>\n<h2 id=\"bd-subscribe-to-multiple-topics-using-kafka-consumer-api\" data-id=\"subscribe-to-multiple-topics-using-kafka-consumer-api\">3. Subscribe to Multiple Topics Using Kafka Consumer API<\/h2>\n<div class=\"bd-anchor\" id=\"subscribe-to-multiple-topics-using-kafka-consumer-api\"><\/div>\n<p>The first method we&#8217;ll discuss uses the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-kafka-consumer-api-read\">Kafka Consumer API<\/a>. Let&#8217;s add the required <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/mvnrepository.com\/artifact\/org.apache.kafka\/kafka-clients\">Maven dependency:<\/a><\/p>\n<pre><code class=\"language-java\">&lt;dependency&gt;\r\n    &lt;groupId&gt;org.apache.kafka&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;kafka-clients&lt;\/artifactId&gt;\r\n    &lt;version&gt;3.5.1&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/code><\/pre>\n<p>Let&#8217;s also configure the Kafka consumer:<\/p>\n<pre><code class=\"language-java\">Properties properties = new Properties();\r\nproperties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, KAFKA_CONTAINER.getBootstrapServers());\r\nproperties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());\r\nproperties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());\r\nproperties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, &quot;earliest&quot;);\r\nproperties.put(ConsumerConfig.GROUP_ID_CONFIG, &quot;payments&quot;);\r\nkafkaConsumer = new KafkaConsumer&lt;&gt;(properties);<\/code><\/pre>\n<p><strong>Before consuming messages, we need to subscribe <em>kafkaConsumer<\/em> to both topics using the <em>subscribe()<\/em> method:<\/strong><\/p>\n<pre><code class=\"language-java\">kafkaConsumer.subscribe(Arrays.asList(&quot;card-payments&quot;, &quot;bank-transfers&quot;));<\/code><\/pre>\n<p>We&#8217;re ready now to test our configuration. Let&#8217;s publish one message on each of the topics:<\/p>\n<pre><code class=\"language-java\">void publishMessages() throws Exception {\r\n    ProducerRecord&lt;String, String&gt; cardPayment = new ProducerRecord&lt;&gt;(&quot;card-payments&quot;, \r\n      &quot;{\\&quot;paymentReference\\&quot;:\\&quot;A184028KM0013790\\&quot;, \\&quot;type\\&quot;:\\&quot;card\\&quot;, \\&quot;amount\\&quot;:\\&quot;275\\&quot;, \\&quot;currency\\&quot;:\\&quot;GBP\\&quot;}&quot;);\r\n    kafkaProducer.send(cardPayment).get();\r\n    \r\n    ProducerRecord&lt;String, String&gt; bankTransfer = new ProducerRecord&lt;&gt;(&quot;bank-transfers&quot;,\r\n      &quot;{\\&quot;paymentReference\\&quot;:\\&quot;19ae2-18mk73-009\\&quot;, \\&quot;type\\&quot;:\\&quot;bank\\&quot;, \\&quot;amount\\&quot;:\\&quot;150\\&quot;, \\&quot;currency\\&quot;:\\&quot;EUR\\&quot;}&quot;);\r\n    kafkaProducer.send(bankTransfer).get();\r\n}<\/code><\/pre>\n<p>Finally, we can write the integration test:<\/p>\n<pre><code class=\"language-java\">@Test\r\nvoid whenSendingMessagesOnTwoTopics_thenConsumerReceivesMessages() throws Exception {\r\n    publishMessages();\r\n    kafkaConsumer.subscribe(Arrays.asList(&quot;card-payments&quot;, &quot;bank-transfers&quot;));\r\n    int eventsProcessed = 0;\r\n    for (ConsumerRecord&lt;String, String&gt; record : kafkaConsumer.poll(Duration.ofSeconds(10))) {\r\n        log.info(&quot;Event on topic={}, payload={}&quot;, record.topic(), record.value());\r\n        eventsProcessed++;\r\n    }\r\n    assertThat(eventsProcessed).isEqualTo(2);\r\n}<\/code><\/pre>\n<h2 id=\"bd-subscribe-to-multiple-topics-using-spring-kafka\" data-id=\"subscribe-to-multiple-topics-using-spring-kafka\">4. Subscribe to Multiple Topics Using Spring Kafka<\/h2>\n<div class=\"bd-anchor\" id=\"subscribe-to-multiple-topics-using-spring-kafka\"><\/div>\n<p>The second method we&#8217;ll discuss uses <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/spring-kafka\">Spring Kafka<\/a>.<\/p>\n<p>Let&#8217;s add the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/mvnrepository.com\/artifact\/org.springframework.kafka\/spring-kafka\"><em>spring-kafka<\/em><\/a> and <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/mvnrepository.com\/artifact\/com.fasterxml.jackson.core\/jackson-databind\"><em>jackson-databind<\/em><\/a> dependencies to our <em>pom.xml<\/em>:<\/p>\n<pre><code class=\"language-java\">&lt;dependency&gt; \r\n    &lt;groupId&gt;org.springframework.kafka&lt;\/groupId&gt; \r\n    &lt;artifactId&gt;spring-kafka&lt;\/artifactId&gt;\r\n    &lt;version&gt;3.0.11&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt; \r\n    &lt;groupId&gt;com.fasterxml.jackson.core&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;jackson-databind&lt;\/artifactId&gt;\r\n    &lt;version&gt;2.15.2&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/code><\/pre>\n<p>Let&#8217;s also define the <em>ConsumerFactory<\/em> and <em>ConcurrentKafkaListenerContainerFactory<\/em> beans:<\/p>\n<pre><code class=\"language-java\">@Bean\r\npublic ConsumerFactory&lt;String, PaymentData&gt; consumerFactory() {\r\n    List&lt;String, String&gt; config = new HashMap&lt;&gt;();\r\n    config.put(BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);\r\n    config.put(VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);\r\n    return new DefaultKafkaConsumerFactory&lt;&gt;(\r\n      config, new StringDeserializer(), new JsonDeserializer&lt;&gt;(PaymentData.class));\r\n}\r\n@Bean\r\npublic ConcurrentKafkaListenerContainerFactory&lt;String, PaymentData&gt; containerFactory() {\r\n    ConcurrentKafkaListenerContainerFactory&lt;String, PaymentData&gt; factory =\r\n      new ConcurrentKafkaListenerContainerFactory&lt;&gt;();\r\n    factory.setConsumerFactory(consumerFactory());\r\n    return factory;\r\n}<\/code><\/pre>\n<p><strong>We need to subscribe to both topics using the <em>topics<\/em> attribute of the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/docs.spring.io\/spring-kafka\/api\/org\/springframework\/kafka\/annotation\/KafkaListener.html\"><em>@KafkaListener<\/em><\/a> annotation:<\/strong><\/p>\n<pre><code class=\"language-java\">@KafkaListener(topics = { &quot;card-payments&quot;, &quot;bank-transfers&quot; }, groupId = &quot;payments&quot;)<\/code><\/pre>\n<p>Finally, we can create the consumer. Additionally, we&#8217;re also including the Kafka header to identify the topic where the message was received:<\/p>\n<pre><code class=\"language-java\">@KafkaListener(topics = { &quot;card-payments&quot;, &quot;bank-transfers&quot; }, groupId = &quot;payments&quot;)\r\npublic void handlePaymentEvents(\r\n  PaymentData paymentData, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) {\r\n    log.info(&quot;Event on topic={}, payload={}&quot;, topic, paymentData);\r\n}<\/code><\/pre>\n<p>Let&#8217;s <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/spring-boot-kafka-testing\">validate our configuration<\/a>:<\/p>\n<pre><code class=\"language-java\">@Test\r\npublic void whenSendingMessagesOnTwoTopics_thenConsumerReceivesMessages() throws Exception {\r\n    CountDownLatch countDownLatch = new CountDownLatch(2);\r\n    doAnswer(invocation -&gt; {\r\n        countDownLatch.countDown();\r\n        return null;\r\n    }).when(paymentsConsumer)\r\n      .handlePaymentEvents(any(), any());\r\n    kafkaTemplate.send(&quot;card-payments&quot;, createCardPayment());\r\n    kafkaTemplate.send(&quot;bank-transfers&quot;, createBankTransfer());\r\n    assertThat(countDownLatch.await(5, TimeUnit.SECONDS)).isTrue();\r\n}<\/code><\/pre>\n<h2 id=\"bd-subscribe-to-multiple-topics-using-kafka-cli\" data-id=\"subscribe-to-multiple-topics-using-kafka-cli\">5. Subscribe to Multiple Topics Using Kafka CLI<\/h2>\n<div class=\"bd-anchor\" id=\"subscribe-to-multiple-topics-using-kafka-cli\"><\/div>\n<p>Kafka CLI is the last method we&#8217;ll discuss.<\/p>\n<p>First, let&#8217;s send a message on each topic:<\/p>\n<pre><code class=\"language-bash\">$ bin\/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic card-payments\r\n&gt;{&quot;paymentReference&quot;:&quot;A184028KM0013790&quot;, &quot;type&quot;:&quot;card&quot;, &quot;amount&quot;:&quot;275&quot;, &quot;currency&quot;:&quot;GBP&quot;}\r\n$ bin\/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic bank-transfers\r\n&gt;{&quot;paymentReference&quot;:&quot;19ae2-18mk73-009&quot;, &quot;type&quot;:&quot;bank&quot;, &quot;amount&quot;:&quot;150&quot;, &quot;currency&quot;:&quot;EUR&quot;}<\/code><\/pre>\n<p>Now, we can start the Kafka CLI consumer. <strong>The <em>include<\/em> option allows us to specify the list of topics to include for message consumption:<\/strong><\/p>\n<pre><code class=\"language-bash\">$ bin\/kafka-console-consumer.sh --from-beginning --bootstrap-server localhost:9092 --include &quot;card-payments|bank-transfers&quot;\r\n<\/code><\/pre>\n<p>Here&#8217;s the output when we run the previous command:<\/p>\n<pre><code class=\"language-bash\">{&quot;paymentReference&quot;:&quot;A184028KM0013790&quot;, &quot;type&quot;:&quot;card&quot;, &quot;amount&quot;:&quot;275&quot;, &quot;currency&quot;:&quot;GBP&quot;}\r\n{&quot;paymentReference&quot;:&quot;19ae2-18mk73-009&quot;, &quot;type&quot;:&quot;bank&quot;, &quot;amount&quot;:&quot;150&quot;, &quot;currency&quot;:&quot;EUR&quot;}<\/code><\/pre>\n<h2 id=\"bd-conclusion\" data-id=\"conclusion\">6. Conclusion<\/h2>\n<div class=\"bd-anchor\" id=\"conclusion\"><\/div>\n<p>In this article, we learned three different methods of subscribing a Kafka consumer to multiple topics.\u00a0This is useful when implementing the same functionality for several topics.<\/p>\n<p>The first two methods are based on Kafka Consumer API and Spring Kafka and can be integrated into an existing application. The last one uses Kafka CLI and can be used to verify multiple topics quickly.<\/p>\n<p>As always, the complete code can be found <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/github.com\/eugenp\/tutorials\/tree\/master\/spring-kafka-2\">over on GitHub<\/a>.<\/p>\n<p><Img align=\"left\" border=\"0\" height=\"1\" width=\"1\" alt=\"\" style=\"border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;\" hspace=\"0\" src=\"https:\/\/feeds.feedblitz.com\/~\/i\/798346619\/0\/baeldung\"><\/p>\n<div style=\"clear:both;padding-top:0.2em;\"><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/798346619\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/798346619\/baeldung,https%3A%2F%2Fwww.baeldung.com%2Fwp-content%2Fuploads%2F2021%2F09%2FJava-7-Featured-1024x536.png\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/798346619\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/798346619\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/798346619\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/kafka-subscribe-consumer-multiple-topics#respond\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&#160;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/kafka-subscribe-consumer-multiple-topics\/feed\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>&#160;<\/div>\n\n<h2><b>Commercials Cooperation Advertisements:<\/b><\/h2>\r\n<p><br>(1) IT Teacher IT Freelance<br> <\/p>\r\n<a href=https:\/\/itteacheritfreelance.hk\/wordpress><img src=http:\/\/gamefootballmobileanimeiphone.com\/wp-content\/uploads\/2023\/09\/ITTeacherITFreelance-Website.png alt=IT\u96fb\u8166\u88dc\u7fd2 java\u88dc\u7fd2 \u70ba\u5927\u5bb6\u914d\u5c0d\u96fb\u8166\u88dc\u7fd2,IT freelance, \u79c1\u4eba\u8001\u5e2b, PHP\u88dc\u7fd2,CSS\u88dc\u7fd2,XML,Java\u88dc\u7fd2,MySQL\u88dc\u7fd2,graphic design\u88dc\u7fd2,\u4e2d\u5c0f\u5b78ICT\u88dc\u7fd2,\u4e00\u5c0d\u4e00\u79c1\u4eba\u88dc\u7fd2\u548cFreelance\u81ea\u7531\u5de5\u4f5c\u914d\u5c0d\u3002\/><\/a><p><a href=https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/findteacher>\u7acb\u523b\u8a3b\u518a\u53ca\u5831\u540d\u96fb\u8166\u88dc\u7fd2\u8ab2\u7a0b\u5427! <\/a><br>\r\n\r\n\u7535\u5b50\u8ba1\u7b97\u673a -\u6559\u80b2 -IT \u96fb\u8166\u73ed\u201d ( IT\u96fb\u8166\u88dc\u7fd2 ) \u63d0\u4f9b\u4e00\u500b\u65b9\u4fbf\u7684\u7535\u5b50\u8ba1\u7b97\u673a \u6559\u80b2\u5e73\u53f0, \u70ba\u5927\u5bb6\u914d\u5c0d\u4fe1\u606f\u6280\u672f, \u96fb\u8166 \u8001\u5e2b, IT freelance \u548c programming expert. \u8b93\u5927\u5bb6\u65b9\u4fbf\u5730\u5c31\u80fd\u627e\u5230\u5408\u9069\u7684\u96fb\u8166\u88dc\u7fd2, \u96fb\u8166\u73ed, \u5bb6\u6559, \u79c1\u4eba\u8001\u5e2b.  <br>\r\n\r\nWe are a education and information platform which you can find a IT private tutorial teacher or freelance. <br>\r\n\r\nAlso we provide different information about information technology, Computer, programming, mobile, Android, apple, game, movie, anime, animation\u2026 \r\n<\/p>\n<p><br>(2) ITSec<br> <\/p><a href=https:\/\/itsec.vip><img src=http:\/\/gamefootballmobileanimeiphone.com\/wp-content\/uploads\/2023\/09\/ITSec-Main-Promotion-Image.png alt= https:\/\/itsec.vip\/\r\nSecure Your Computers from Cyber Threats and mitigate risks with professional services to defend Hackers.  \r\nITSec provide IT Security and Compliance Services, including IT Compliance Services, Risk Assessment, IT Audit, Security Assessment and Audit, ISO 27001 Consulting and Certification, GDPR Compliance Services, Privacy Impact Assessment (PIA), Penetration test, Ethical Hacking, Vulnerabilities scan, IT Consulting, Data Privacy Consulting, Data Protection Services, Information Security Consulting, Cyber Security Consulting, Network Security Audit, Security Awareness Training.\/><\/a> \r\n<br><br> \r\n<p><a href=https:\/\/itsec.vip>www.ITSec.vip<\/a> <br> <br> \r\n<p><a href=https:\/\/sraa.com.hk>www.Sraa.com.hk<\/a> <br> <br> \r\n<p><a href=https:\/\/itsec.hk>www.ITSec.hk<\/a> <br> <br> \r\n<p><a href=https:\/\/penetrationtest.hk>www.Penetrationtest.hk<\/a> <br> <br> \r\n<p><a href=https:\/\/itseceu.uk>www.ITSeceu.uk<\/a> <br> <br> \r\nSecure Your Computers from Cyber Threats and mitigate risks with professional services to defend Hackers. <br><br>\r\nITSec provide IT Security and Compliance Services, including IT Compliance Services, Risk Assessment, IT Audit, Security Assessment and Audit, ISO 27001 Consulting and Certification, GDPR Compliance Services, Privacy Impact Assessment (PIA), Penetration test, Ethical Hacking, Vulnerabilities scan, IT Consulting, Data Privacy Consulting, Data Protection Services, Information Security Consulting, Cyber Security Consulting, Network Security Audit, Security Awareness Training. \r\n<br><br>Contact us right away. <br><br>Email (Prefer using email to contact us): <br>SalesExecutive@ITSec.vip<\/p>","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-7-Featured-1024x536.png\" class=\"webfeedsFeaturedVisual wp-post-image\" alt=\"\"><\/p>\n<p>Learn three different methods of subscribing a Kafka consumer to multiple topics.<\/p>\n<div><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/798346619\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\"><\/a>\u00a0<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/798346619\/baeldung,https%3A%2F%2Fwww.baeldung.com%2Fwp-content%2Fuploads%2F2021%2F09%2FJava-7-Featured-1024x536.png\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\"><\/a>\u00a0<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/798346619\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\"><\/a>\u00a0<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/798346619\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\"><\/a>\u00a0<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/798346619\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\"><\/a>\u00a0<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/kafka-subscribe-consumer-multiple-topics#respond\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>\u00a0<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/kafka-subscribe-consumer-multiple-topics\/feed\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>\u00a0<\/div>\n","protected":false},"author":864,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[22],"tags":[61,122,127,129,124,128,125,132,131,133,126,130,123,66,94,88,97,56,64,65,60,112,40,75,95,104,33,120,7959,105,101,98,115,30,29,41,86,70,69,68,72,71,26,118,108,87,46,55,48,52,54,51,50,83,62,58,57,109,35,59,63,85,79,82,96,80,27,81,114,44,42,43,45,38,39,110,117,100,111,116,73,89,90,92,91,93,84,78,37,102,34,36,77,67,74,99,113,119,28,121,32,47,49,53,103,31,76],"class_list":["post-17438","post","type-post","status-publish","format-standard","hentry","category-mobile","tag-airpods","tag-anime","tag-anime-characters","tag-anime-cosplay","tag-anime-edits","tag-anime-merchandise","tag-anime-movies","tag-anime-news","tag-anime-recommendations","tag-anime-reviews","tag-anime-series","tag-anime-streaming","tag-animes","tag-app-store","tag-app-store-samsung","tag-appgallery","tag-appgallery-oneplus","tag-apple","tag-apple-music","tag-apple-tv","tag-apple-watch","tag-bbc-sport","tag-best-mobile-games","tag-bixby","tag-bixby-xiaomi","tag-champions-league","tag-cyberpunk","tag-cyberpunk-2077","tag-data","tag-fantasy-football","tag-fifa","tag-football","tag-formula-1","tag-fortnite","tag-free-fire","tag-free-mobile-games","tag-freebuds-pro","tag-galaxy-a52","tag-galaxy-note-20","tag-galaxy-s21","tag-galaxy-watch-4","tag-galaxy-z-fold-3","tag-game","tag-games","tag-golf","tag-harmonyos","tag-how-to-backup-iphone","tag-how-to-factory-reset-iphone","tag-how-to-reset-iphone","tag-how-to-restore-iphone","tag-how-to-unlock-iphone","tag-how-to-unlock-iphone-5","tag-how-to-unlock-iphone-6","tag-huawei","tag-ios","tag-ipad","tag-iphone","tag-live-soccer","tag-lol","tag-macbook","tag-macos","tag-mate-40-pro","tag-mi-11-lite","tag-mi-home-security-camera-basic-1080p","tag-mi-home-security-camera-basic-1080p-huawei","tag-mi-smart-band-6","tag-minecraft","tag-miui","tag-mlb-scores","tag-mobile-game-design","tag-mobile-game-development","tag-mobile-game-marketing","tag-mobile-game-monetization","tag-mobile-games","tag-mobile-gaming","tag-nba-scores","tag-nba-standings","tag-nfl","tag-nfl-scores","tag-nhl-scores","tag-one-ui","tag-oneplus","tag-oneplus-9-pro","tag-oneplus-buds-pro","tag-oneplus-nord-ce-5g","tag-oxygenos","tag-p40-pro-plus","tag-poco-x3-pro","tag-pokemon","tag-premier-league","tag-pubg","tag-pubg-mobile","tag-redmi-note-10-pro","tag-samsung","tag-samsung-pay","tag-soccer","tag-sports","tag-steam","tag-steeam","tag-top-10-anime","tag-valorant","tag-when-do-the-iphone-7-come-out","tag-when-does-the-iphone-7-come-out","tag-when-is-the-iphone-7-coming-out","tag-world-cup","tag-xbox-series-x","tag-xiaomi"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts\/17438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/users\/864"}],"replies":[{"embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/comments?post=17438"}],"version-history":[{"count":1,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts\/17438\/revisions"}],"predecessor-version":[{"id":17439,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts\/17438\/revisions\/17439"}],"wp:attachment":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/media?parent=17438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/categories?post=17438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/tags?post=17438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}