{"id":26535,"date":"2022-09-21T16:01:25","date_gmt":"2022-09-21T14:01:25","guid":{"rendered":"https:\/\/device-insight.com\/?post_type=developers-blog&#038;p=26535"},"modified":"2024-03-04T10:54:43","modified_gmt":"2024-03-04T09:54:43","slug":"azure-event-hubs-kafkactl","status":"publish","type":"developers-blog","link":"https:\/\/device-insight.com\/en\/developers-blog\/azure-event-hubs-kafkactl\/","title":{"rendered":"Managing Azure Event Hubs with kafkactl"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"26535\" class=\"elementor elementor-26535\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"developers-blog\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7b4f828b devel_blog_title elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7b4f828b\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1786bf7e blog_col\" data-id=\"1786bf7e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fa4243a elementor-align-left devel_blog_back_btn ha-has-bg-overlay elementor-widget elementor-widget-button\" data-id=\"fa4243a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-size-sm\" role=\"button\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"hm hm-arrow-left1\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Back<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-612acb44 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading\" data-id=\"612acb44\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"theme-post-title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Managing Azure Event Hubs with kafkactl<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-539cc96 elementor-widget elementor-widget-post-info\" data-id=\"539cc96\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"post-info.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-inline-items elementor-icon-list-items elementor-post-info\">\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-6345c40 elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-custom\">\n\t\t\t\t\t\t\t\t\t\tPeter Scherfchen\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-7f3e269 elementor-inline-item\">\n\t\t\t\t\t\t<a href=\"https:\/\/www.linkedin.com\/in\/peter-scherfchen-b475b0253\/\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fab fa-linkedin\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-custom\">\n\t\t\t\t\t\t\t\t\t\thttps:\/\/www.linkedin.com\/in\/stefan-hudelmaier\/\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-b86a0c7 elementor-inline-item\" itemprop=\"datePublished\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-date\">\n\t\t\t\t\t\t\t\t\t\t<time>2022\/09\/21<\/time>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-808e92e elementor-inline-item\" itemprop=\"about\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-post-info__terms-list\">\n\t\t\t\t<a href=\"https:\/\/device-insight.com\/en\/developers_blog_category\/azure\/\" class=\"elementor-post-info__terms-list-item\">Azure<\/a>\t\t\t\t<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-17c17f87 elementor-widget elementor-widget-text-editor\" data-id=\"17c17f87\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-renderer-start-pos=\"163\">We faced the issue that some messages in Azure Event Hub couldn\u2019t be processed. We wanted to fetch the messages with all additional information to analyze the issue. As Azure Event Hubs has an interface for Apache Kafka, we decided to use <i>kafkactl<\/i> as it is quite flexible.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-de1fb1a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"de1fb1a\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-44e83259 blog_col\" data-id=\"44e83259\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1a37323 elementor-widget elementor-widget-heading\" data-id=\"1a37323\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">About kafkactl<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1377b04 elementor-widget elementor-widget-text-editor\" data-id=\"1377b04\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-renderer-start-pos=\"315\"><a href=\"https:\/\/github.com\/deviceinsight\/kafkactl\" target=\"_blank\" rel=\"noopener\">kafkactl<\/a> is a small command-line utility developed by Device Insight that is written in Go. As the name implies, the tool tries to be for Kafka clusters what kubectl is for Kubernetes clusters. It allows to manage multiple clusters and can be used to inspect and control various aspects around Kafka like topics and consumer groups.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-78ea6c07 elementor-widget elementor-widget-heading\" data-id=\"78ea6c07\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Configuration \/ Information of Azure Event Hubs<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-66dc428 elementor-widget elementor-widget-text-editor\" data-id=\"66dc428\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-renderer-start-pos=\"315\">The broker for kafkactl is the \u201cHost name\u201d value of the Azure Event Hubs Namespace.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-15d7e9ce elementor-widget elementor-widget-image\" data-id=\"15d7e9ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"580\" height=\"322\" src=\"https:\/\/device-insight.com\/wp-content\/uploads\/2022\/09\/azure-event-hubs-namespace-hostname-2-768x427.png\" class=\"attachment-medium_large size-medium_large wp-image-26547\" alt=\"Where to get the Event Hubs Namespace Host Name in the Azure Portal\" srcset=\"https:\/\/device-insight.com\/wp-content\/uploads\/2022\/09\/azure-event-hubs-namespace-hostname-2-768x427.png 768w, https:\/\/device-insight.com\/wp-content\/uploads\/2022\/09\/azure-event-hubs-namespace-hostname-2-300x167.png 300w, https:\/\/device-insight.com\/wp-content\/uploads\/2022\/09\/azure-event-hubs-namespace-hostname-2-1024x570.png 1024w, https:\/\/device-insight.com\/wp-content\/uploads\/2022\/09\/azure-event-hubs-namespace-hostname-2.png 1037w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Where to find the Event Hubs Namespace Host Name in the Azure Portal<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3c8e5631 elementor-widget elementor-widget-text-editor\" data-id=\"3c8e5631\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-renderer-start-pos=\"400\">For the authentication the <span data-renderer-mark=\"true\" data-mark-type=\"annotation\" data-mark-annotation-type=\"inlineComment\" data-id=\"38087e35-16d2-4f76-93b0-0ff153512398\">connection string is used. This can be for a specific topic \/ event hub or the primary key<\/span> which allows all topics \/ event hubs to be consumed.<\/p><p data-renderer-start-pos=\"568\">Go to \u201cShared access policies\u201d and select the \u201cRootManageSharedAccessKey\u201d. Then copy the primary connection string.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c2abff elementor-widget elementor-widget-image\" data-id=\"4c2abff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"580\" height=\"326\" src=\"https:\/\/device-insight.com\/wp-content\/uploads\/2022\/09\/event-hubs-connection-string-768x432.png\" class=\"attachment-medium_large size-medium_large wp-image-26552\" alt=\"Screenshot of the Azure Portal that shows how to navigate to the RootManageSharedAccessKey Connection String\" srcset=\"https:\/\/device-insight.com\/wp-content\/uploads\/2022\/09\/event-hubs-connection-string-768x432.png 768w, https:\/\/device-insight.com\/wp-content\/uploads\/2022\/09\/event-hubs-connection-string-300x169.png 300w, https:\/\/device-insight.com\/wp-content\/uploads\/2022\/09\/event-hubs-connection-string-1024x576.png 1024w, https:\/\/device-insight.com\/wp-content\/uploads\/2022\/09\/event-hubs-connection-string.png 1128w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">How to find the RootManageSharedAccessKey Connection String<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-506bdd8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"506bdd8\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1dfad7f blog_col\" data-id=\"1dfad7f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0554f80 elementor-widget elementor-widget-heading\" data-id=\"0554f80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Configuration of kafkactl<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a3b411e elementor-widget elementor-widget-text-editor\" data-id=\"a3b411e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tThe Azure Event Hub Kafka interface uses Kafka 1.0 and SASL\nauthentication. This must be configured in the kafkactl <code>config.yml<\/code> file.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-721a2f9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"721a2f9\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d3b47ba\" data-id=\"d3b47ba\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ad925b2 elementor-widget elementor-widget-ha-source-code happy-addon ha-source-code happy-addon-pro\" data-id=\"ad925b2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"ha-source-code.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"ha-source-code prism\" data-lng-type=\"toml\" data-after-copy=\"Copied\">\n\t\t\t<pre>\n\t\t\t\t\t\t\t<button class=\"ha-copy-code-button\">Copy to clipboard<\/button>\n\t\t\t\t\t\t\t<code class=\"language-toml\">\n\t\t\t\t\tcontexts:\n     dev-blog-demo:\n        brokers:\n          - &quot;dev-blog-demo.servicebus.windows.net:9093&quot;\n        sasl:\n            enabled: true\n            mechanism: &quot;plaintext&quot;\n            password: &quot;Endpoint=sb:\/\/dev-blog-demo.servicebus.windows.net\/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=qVyjNrYLvqJmh5GVmlar0Yb5RRdmJGAXSWc498sktQw=&quot;\n            username: &quot;$ConnectionString&quot;\n        tls:\n            enabled: true\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8649aae elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8649aae\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-29aae98 blog_col\" data-id=\"29aae98\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ab68ba2 elementor-widget elementor-widget-text-editor\" data-id=\"ab68ba2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-renderer-start-pos=\"1427\">To adopt this for your environment, you need to set the\u00a0<code data-renderer-mark=\"true\">brokers<\/code>\u00a0and the\u00a0<code data-renderer-mark=\"true\">password<\/code>\u00a0aka primary connection-string.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-afd8369 elementor-widget elementor-widget-heading\" data-id=\"afd8369\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Usage<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8b50f40 elementor-widget elementor-widget-text-editor\" data-id=\"8b50f40\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-renderer-start-pos=\"1427\">Now you activate the context and use kafkactl as wanted.<\/p><p data-renderer-start-pos=\"1486\">For example, create a new topic, write to the topic, consume from the topic and delete the topic again.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d0cfce5 elementor-widget elementor-widget-ha-source-code happy-addon ha-source-code happy-addon-pro\" data-id=\"d0cfce5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"ha-source-code.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"ha-source-code prism\" data-lng-type=\"diff\" data-after-copy=\"Copied\">\n\t\t\t<pre>\n\t\t\t\t\t\t\t<button class=\"ha-copy-code-button\">Copy to clipboard<\/button>\n\t\t\t\t\t\t\t<code class=\"language-diff\">\n\t\t\t\t\tpsc@psc2 ~ % kafkactl config use-context dev-blog-demo\n\npsc@psc2 ~ % kafkactl get topics\nTOPIC       PARTITIONS\nexample     4\n\npsc@psc2 ~ % kafkactl create topic my-new-event-hub --partitions 8 \ntopic created: my-new-event-hub\n\npsc@psc2 ~ % kafkactl get topics\nTOPIC                PARTITIONS\nexample              4\nmy-new-event-hub     8\n\npsc@psc2 ~ % kafkactl produce my-new-event-hub --header KEY:VALUE --value &#039;{&quot;msg&quot;:&quot;test&quot;}&#039;\nmessage produced (partition=1\toffset=0)\n\npsc@psc2 ~ % kafkactl consume my-new-event-hub --from-beginning --print-headers\nKEY:VALUE#{&quot;msg&quot;:&quot;test&quot;}\n\npsc@psc2 ~ % kafkactl delete topic example\ntopic deleted: example\n\npsc@psc2 ~ % kafkactl get topics\nTOPIC                PARTITIONS\nmy-new-event-hub     8\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-492c1a0 elementor-widget elementor-widget-text-editor\" data-id=\"492c1a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>For more details about its usage see <a href=\"https:\/\/github.com\/deviceinsight\/kafkactl\" target=\"_blank\" rel=\"noopener\">kafkactl\u2019s GitHub repository<\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7917c55c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7917c55c\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-78099873 blog_col\" data-id=\"78099873\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-753c7837 elementor-widget elementor-widget-heading\" data-id=\"753c7837\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Recommended posts<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dc8065b elementor-widget elementor-widget-shortcode\" data-id=\"dc8065b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"teasers teasers-single-post\"><div class=\"teasers__container\"><div class=\"teasers__single-teaser teasers__single-teaser--developer\"><div class=\"teasers__content\"><div class=\"date__box\"><div class=\"date__box-name date__box-name--developers\">Stefan Hudelmaier<\/div><div class=\"date__box-date date__box-date--developers\">2023\/01\/25<\/div><div><a href=\"https:\/\/device-insight.com\/en\/developers_blog_category\/azure\/\" class=\"date__box-button date__box-button--developers\">Azure<\/a><\/div><\/div><h2 class=\"headline\"><a href=\"https:\/\/device-insight.com\/en\/developers-blog\/vetting-azure-managed-applications-through-ci-cd\/\">Vetting Azure Managed Applications through CI\/CD<\/a><\/h2><div class=\"description\">How to speed up reviews for Azure Managed Applications with the right validity checks.<\/div><\/div><\/div><div class=\"teasers__single-teaser teasers__single-teaser--developer\"><div class=\"teasers__content\"><div class=\"date__box\"><div class=\"date__box-name date__box-name--developers\">Stefan Hudelmaier<\/div><div class=\"date__box-date date__box-date--developers\">2023\/01\/03<\/div><div><a href=\"https:\/\/device-insight.com\/en\/developers_blog_category\/azure\/\" class=\"date__box-button date__box-button--developers\">Azure<\/a><\/div><\/div><h2 class=\"headline\"><a href=\"https:\/\/device-insight.com\/en\/developers-blog\/azure-managed-applications-and-tags\/\">Managed Applications and tags<\/a><\/h2><div class=\"description\">How to set tags of a managed resource group when deploying Azure Managed Applications.<\/div><\/div><\/div><\/div><\/div>\r\n\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>How to use the command-line tool kafkactl to efficiently manage Azure Event Hubs via the Kafka API.<\/p>\n","protected":false},"author":13,"featured_media":0,"menu_order":0,"template":"elementor_header_footer","meta":{"_acf_changed":false},"tags":[141],"developers_blog_category":[138],"class_list":["post-26535","developers-blog","type-developers-blog","status-publish","hentry","tag-azure","developers_blog_category-azure"],"acf":[],"_links":{"self":[{"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/developers-blog\/26535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/developers-blog"}],"about":[{"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/types\/developers-blog"}],"author":[{"embeddable":true,"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/users\/13"}],"version-history":[{"count":76,"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/developers-blog\/26535\/revisions"}],"predecessor-version":[{"id":34942,"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/developers-blog\/26535\/revisions\/34942"}],"wp:attachment":[{"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/media?parent=26535"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/tags?post=26535"},{"taxonomy":"developers_blog_category","embeddable":true,"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/developers_blog_category?post=26535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}