ส่ง/ผั language ข้อความผ่าน kafka

0

คำถาม

นี่เป็นครั้งแรกที่ฉันใช้ Kafka และฉันกำลังวางแผนที่จะใช้ kafka ด้วยอข่ายนอก

ฉันอยากจะรู้ว่าถ้าฉันสามารถส่ง LANGUAGE เป็นข้อความเมื่อฉันร่วมงาน

ผมตามรอยหัดเล่น: https://developer.confluent.io/get-started/dotnet/#build-producer

ยังมีทางสำหรับค่าเป็นต้องแผนไว้เพื่อเป็นนางแบบดังนั้นค่า/language โครงสร้างมักจะเกี่ยวข้องกันรุ่นนั้น

ดังนั้นสำหรับตัวอย่าง:ถ้าฉันต้องการของฉัน language ค่าเป็น

{
  "customerName":"anything",
  "eventType":"one-of-three-enums",
  "columnsChanged": "string value or something"
}

ส่วนใหญ่ของตัวอย่างที่ฉันสามารถหาเหมือนนี้:

using Confluent.Kafka;
using System;
using Microsoft.Extensions.Configuration;

class Producer {
    static void Main(string[] args)
    {
        if (args.Length != 1) {
            Console.WriteLine("Please provide the configuration file path as a command line argument");
        }

        IConfiguration configuration = new ConfigurationBuilder()
            .AddIniFile(args[0])
            .Build();

        const string topic = "purchases";

        string[] users = { "eabara", "jsmith", "sgarcia", "jbernard", "htanaka", "awalther" };
        string[] items = { "book", "alarm clock", "t-shirts", "gift card", "batteries" };

        using (var producer = new ProducerBuilder<string, string>(
            configuration.AsEnumerable()).Build())
        {
            var numProduced = 0;
            const int numMessages = 10;
            for (int i = 0; i < numMessages; ++i)
            {
                Random rnd = new Random();
                var user = users[rnd.Next(users.Length)];
                var item = items[rnd.Next(items.Length)];

                producer.Produce(topic, new Message<string, string> { Key = user, Value = item },
                    (deliveryReport) =>
                    {
                        if (deliveryReport.Error.Code != ErrorCode.NoError) {
                            Console.WriteLine($"Failed to deliver message: {deliveryReport.Error.Reason}");
                        }
                        else {
                            Console.WriteLine($"Produced event to topic {topic}: key = {user,-10} value = {item}");
                            numProduced += 1;
                        }
                    });
            }

            producer.Flush(TimeSpan.FromSeconds(10));
            Console.WriteLine($"{numProduced} messages were produced to topic {topic}");
        }
    }
}

ฉันต้องรายการเป็นชั้นเรียนอยู่ใน language องเจ้าโครงสร้างนั่น

.net apache-kafka asp.net-core
2021-11-23 21:53:21
1

คำตอบที่ดีที่สุด

0

อยากจะรู้ว่าถ้าฉันสามารถส่ง LANGUAGE เป็นข้อความเมื่อฉันร่วมงาน

ใช่แล้ว Kafka ร้านขายไบต์และ converts ที่ไบต์การใช้ Serializers. ตอนที่ตึกนี้เป็นโปรดิวเซอร์,คุณมีตัวเลือกของโทรมา SetValueSerializer.

บางคนที่สร้างขึ้นใน serializers สามารถพบที่ https://github.com/confluentinc/confluent-kafka-dotnet/blob/master/src/Confluent.Kafka/Serializers.cs

คุณจะต้องเขียนของตัวเองเพื่อ generically จัดการอะไร LANGUAGE นางแบบประเภท.

เมื่อใช้ค Utf8Serializer สำหรับผลตอบแทนคุณจะต้องการที่จะ pre-serialize ที่สิ่งของจากของนางแบบชั้นเรียนแล้วส่งมันเป็นค่า. ในของตัวอย่างเช่นคุณจะแทนที่ var item กับบางอย่า serialized เดาใจ

ยังไงฉันเปลี่ยน C#วัตถุนให้เป็น LANGUAGE ข้อความมาอข่าย?

เมื่อใช้นางแบบชั้นเรียนของคุณข้อมูลปกติแล้วจะเป็นทนไม่ไห-ป้อนไว้จนกว่าคุณเริ่มต้นด้วยตนเองกำลังเขียน LANGUAGE หรือใช้พจนานุกรมประเภท. ถ้าคุณต้องการเว็บเบราว์เซอร์ภายนอกการตรวจสอบข้อความที่ Confluent ชุดรูปแบบลงชื่อคือหนึ่งตัวอย่างเช่นนั้นสนับสนุน JSONSchema และ JsonSerializer จาก confluent-dotnet-kafka โครงการสนับสนุนเรื่องนี้

2021-11-23 22:27:28

แค่ตามเรื่องคำถาม คุณรู้มั้ยถ้าฉันสามารถจำกัดงข้อความขนาดและมีทางสำหรับโปรดิวเซอร์ตรวจดูมันคืออะไรขนาดของเหตุการณ์ก่อนจะทำการส่งและไม่อนุญาตให้ส่งข้อความหากขนาดเป็นมากกว่าที่จำกัด?
Learn AspNet

Kafka มีค่าปริยายจำกัดของ 1MB ข้อความ batches. ถ้าคุณได้ขนาดของ serialized ตามวันที่@item:inlistbox sort อาเรย์มันควรจะเป็นปิด approximation ของบุคคลหนึ่งบันทึกขนาด(มีการเพิ่มอยู่เหนือศีรษะอย่างเช่นประวัติส่วนหัวแล้วเวลาประทับ,ถึงแม้ว่า)
OneCricketeer

ขอบคุณ คุณสามารถได้โปรดตอบ: stackoverflow.com/questions/70097676/...
Learn AspNet

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่