日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

C# SDK收發消息

本文介紹如何使用C# SDK通過接入點接入云消息隊列 Kafka 版并收發消息。

環境配置

您已安裝.NET。更多信息,請參見安裝.NET

安裝C#依賴庫

執行以下命令安裝C#依賴庫。

dotnet add package -v 1.5.2 Confluent.Kafka

準備配置

  1. 可選:下載SSL根證書。如果是SSL接入點,需下載該證書。

  2. 配置producer.csconsumer.cs文件。

    表 1. 配置項說明

    參數

    描述

    BootstrapServers

    SSL接入點。您可在云消息隊列 Kafka 版控制臺實例詳情頁面的接入點信息區域獲取。

    SslCaLocation

    下載的SSL根證書的路徑。僅SSL接入點需要此配置項。

    SaslMechanism

    收發消息使用的安全機制。

    • SSL接入點:取值為SaslMechanism.Plain

    • SASL接入點:PLAIN機制時,取值為SaslMechanism.Plain;SCRAM機制時,取值為SaslMechanism.ScramSha256

    SecurityProtocol

    收發消息使用的安全協議。

    • SSL接入點:取值為SecurityProtocol.SaslSsl

    • SASL接入點:PLAIN機制時,取值為SecurityProtocol.SaslPlaintext;SCRAM機制時,取值為SecurityProtocol.SaslPlaintext

    SaslUsername

    SASL用戶名。如果是默認接入點,則無此配置項。

    說明
    • 如果實例未開啟ACL,您可以在云消息隊列 Kafka 版控制臺實例詳情頁面的配置信息區域獲取默認的用戶名密碼
    • 如果實例已開啟ACL,請確保要使用的SASL用戶已被授予向云消息隊列 Kafka 版實例收發消息的權限。具體操作,請參見SASL用戶授權

    SaslPassword

    SASL用戶名密碼。如果是默認接入點,則無此配置項。

    topic

    Topic名稱。您可在云消息隊列 Kafka 版控制臺Topic 管理頁面獲取。

    GroupId

    Group名稱。您可在云消息隊列 Kafka 版控制臺Group 管理頁面獲取。

發送消息

執行以下命令發送消息。

dotnet run producer.cs

消息程序producer.cs示例代碼如下:

關于代碼中配置項說明,請參見配置項說明

重要

示例代碼為SSL接入點的代碼。您需要根據實際接入點類型,刪除或者修改配置項代碼。

using System;
using Confluent.Kafka;

class Producer
{
    public static void Main(string[] args)
    {
        var conf = new ProducerConfig {
            BootstrapServers = "XXX,XXX,XXX",
            SslCaLocation = "XXX/only-4096-ca-cert.pem",
            SaslMechanism = SaslMechanism.Plain,
            SecurityProtocol = SecurityProtocol.SaslSsl,
            SslEndpointIdentificationAlgorithm = SslEndpointIdentificationAlgorithm.None,
            SaslUsername = "XXX",
            SaslPassword = "XXX",
            };

        Action<DeliveryReport<Null, string>> handler = r =>
            Console.WriteLine(!r.Error.IsError
                ? $"Delivered message to {r.TopicPartitionOffset}"
                : $"Delivery Error: {r.Error.Reason}");

        string topic ="XXX";

        using (var p = new ProducerBuilder<Null, string>(conf).Build())
        {
            for (int i=0; i<100; ++i)
            {
                p.Produce(topic, new Message<Null, string> { Value = i.ToString() }, handler);
            }
            p.Flush(TimeSpan.FromSeconds(10));
        }
    }
}

訂閱消息

執行以下命令消費消息。

dotnet run consumer.cs

消息程序consumer.cs示例代碼如下:

關于代碼中配置項說明,請參見配置項說明

重要

示例代碼為SSL接入點的代碼。您需要根據實際接入點類型,刪除或者修改配置項代碼。

using System;
using System.Threading;
using Confluent.Kafka;

class Consumer
{
    public static void Main(string[] args)
    {
        var conf = new ConsumerConfig {
            GroupId = "XXX",
            BootstrapServers = "XXX,XXX,XXX",
            SslCaLocation = "XXX/only-4096-ca-cert.pem",
            SaslMechanism = SaslMechanism.Plain,
            SslEndpointIdentificationAlgorithm = SslEndpointIdentificationAlgorithm.None,
            SecurityProtocol = SecurityProtocol.SaslSsl,
            SaslUsername = "XXX",
            SaslPassword = "XXX",
            AutoOffsetReset = AutoOffsetReset.Earliest
        };

        string topic = "XXX";

        using (var c = new ConsumerBuilder<Ignore, string>(conf).Build())
        {
            c.Subscribe(topic);

            CancellationTokenSource cts = new CancellationTokenSource();
            Console.CancelKeyPress += (_, e) => {
                e.Cancel = true;
                cts.Cancel();
            };

            try
            {
                while (true)
                {
                    try
                    {
                        var cr = c.Consume(cts.Token);
                        Console.WriteLine($"Consumed message '{cr.Value}' at: '{cr.TopicPartitionOffset}'.");
                    }
                    catch (ConsumeException e)
                    {
                        Console.WriteLine($"Error occured: {e.Error.Reason}");
                    }
                }
            }
            catch (OperationCanceledException)
            {
                c.Close();
            }
        }
    }
}