ApacheBeam和Python。尝试对ApacheKafka进行SASL_SSLOAUTHBEARER验证发生错误。
创始人
2024-09-05 11:30:12
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、完成山西扣点子的技巧有辅助插件,帮助玩家取...
一起来讨论!长城互娱辅助,德普... 一起来讨论!长城互娱辅助,德普之星app安卓版破解版,必赢教程(有挂方针);相信小伙伴都知道这个长城...
必看攻略!小逸碰胡辅助器,微信... 必看攻略!小逸碰胡辅助器,微信小程序辅助器(一直真的有挂)1、打开软件启动之后找到中间准星的标志长按...
玩家交流!潮汕激k脚本,红龙p... 玩家交流!潮汕激k脚本,红龙poker辅助,技巧教程(的确有挂);大家肯定在之前潮汕激k脚本或者潮汕...
一分钟揭秘!好玩贰柒拾辅助,手... 一分钟揭秘!好玩贰柒拾辅助,手游辅助软件(一直存在有挂)1、很好的工具软件,可以解锁游戏的好玩贰柒拾...
科技介绍!开心十三张有没有挂,... 科技介绍!开心十三张有没有挂,wepoker开脚本视频,攻略教程(有挂头条);开心十三张有没有挂软件...
重大通报!创思维激k透视挂,如... 重大通报!创思维激k透视挂,如何设置钱塘十三水辅助器(本来存在有挂)1、任何如何设置钱塘十三水辅助器...
玩家爆料!欢聚水鱼辅助视频,拱... 玩家爆料!欢聚水鱼辅助视频,拱趴大菠萝机器人,安装教程(有挂秘籍);1、让任何用户在无需AI插件第三...
玩家必备攻略!微乐小程序微乐房... 玩家必备攻略!微乐小程序微乐房间怎么开挂,博雅红河西元(切实真的有挂)1)微乐小程序微乐房间怎么开挂...
科技分享!福建13水源码,德普... 科技分享!福建13水源码,德普辅助app,透牌教程(真是有挂);福建13水源码免费下载原版,在福建1...