ApacheBeam和Python。尝试对ApacheKafka进行SASL_SSLOAUTHBEARER验证发生错误。
创始人
2024-09-05 11:30:30
0

一种可能的解决方法是在 Apache Beam 中使用 KafkaPython 库,并配置正确的安全协议和认证机制。下面是一个代码示例:

import apache_beam as beam
from apache_beam.transforms import window
from kafka import KafkaProducer
from kafka import KafkaConsumer
from kafka.errors import KafkaError

class KafkaCustomSink(beam.PTransform):
    """A custom Apache Beam sink for producing messages to Apache Kafka"""

    def __init__(self, bootstrap_servers, topic, security_protocol='SASL_SSL', sasl_mechanism='OAUTHBEARER', sasl_oauth_token_provider=pks_utils.oauth2_provider_from_environment()):
        self.bootstrap_servers = bootstrap_servers
        self.topic = topic
        self.security_protocol = security_protocol
        self.sasl_mechanism = sasl_mechanism
        self.sasl_oauth_token_provider = sasl_oauth_token_provider

    # In this transform, the elements of the PCollection are simply
    # sent as messages to the Kafka topic.
    def expand(self, pcoll):
        producer = KafkaProducer(
            bootstrap_servers=self.bootstrap_servers,
            security_protocol=self.security_protocol,
            sasl_mechanism=self.sasl_mechanism,
            sasl_oauth_token_provider=self.sasl_oauth_token_provider)

        def send_to_kafka(element):
            future = producer.send(self.topic, element)
            try:
                record_metadata = future.get(timeout=10)
            except KafkaError as ex:
                # Decide what to do if produce request failed...
                print('Error producing to topic {0}: {1}'.format(self.topic, str(ex)))
            except:
                # Decide what to do if produce request failed...
                print('Error producing to topic {0}: unexpected error'.format(self.topic))
            else:
                # Print metadata of the produced message for reference...
                print('Message produced with metadata: {0}'.format(str(record_metadata)))

        pcoll | 'Kafka send' >> beam.Map(send_to_kafka)

        return pcoll

# Example usage of the KafkaCustomSink custom sink...
with beam.Pipeline() as pipeline:
    data = ['{"value": "ABCD"}', '{"value": "EFGH"}', '{"value": "IJKL"}']
    (pipeline
     | "Create data" >> beam.Create(data)
     | "Write to Kafka" >> KafkaCustomSink(bootstrap_servers='kafka-brokers', topic='test-topic')
     )

在代码示例中,我们使用 KafkaCustomSink 类作为 Apache Beam 的自定义 sink,将 PCollections 中的消息发送到 Apache Kafka。在初始化 KafkaProducer 时,我们设置

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...