भेजें/का उत्पादन json के माध्यम से संदेश काफ्का

0

सवाल

यह मेरा पहली बार का उपयोग कर काफ्का और मैं योजना बना रहा हूँ का उपयोग करने के लिए काफ्का के साथ .नेट

मैं जानना चाहता था अगर मैं भेज सकते हैं JSON एक संदेश के रूप में जब मैं एक घटना का निर्माण

मैं कर रहा हूँ ट्यूटोरियल का पालन: https://developer.confluent.io/get-started/dotnet/#build-producer

इसके अलावा, वहाँ एक तरीका है के लिए है कि मूल्य के लिए मैप किया जा करने के लिए एक मॉडल इतना है कि मूल्य/json संरचना हमेशा के लिए बंधे है कि मॉडल

तो, उदाहरण के लिए: अगर मैं चाहता हूँ मेरी json मूल्य किया जा करने के लिए

{
  "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}");
        }
    }
}

मैं होगा की तरह आइटम किया जा करने के लिए एक वर्ग में json संरचना है ।

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

सबसे अच्छा जवाब

0

जानना चाहता था अगर मैं भेज सकते हैं JSON एक संदेश के रूप में जब मैं एक घटना का निर्माण

हाँ. काफ्का की दुकानों बाइट्स और धर्मान्तरित बाइट्स का उपयोग कर Serializers. के निर्माण के लिए जब एक निर्माता, आप का विकल्प होता है बुला SetValueSerializer.

कुछ में निर्मित के serializers पर पाया जा सकता है - https://github.com/confluentinc/confluent-kafka-dotnet/blob/master/src/Confluent.Kafka/Serializers.cs

आप की आवश्यकता होगी करने के लिए लिखने के लिए अपने स्वयं के सामान्य रूप से किसी भी संभाल JSON मॉडल प्रकार की है.

जब का उपयोग कर Utf8Serializer तार के लिए, आप की आवश्यकता होगी करने के लिए पूर्व-serialize वस्तु से अपने मॉडल वर्ग, फिर भेजने के रूप में है कि मूल्य. अपने उदाहरण में, आप चाहते हैं की जगह var item कुछ धारावाहिक की वस्तु है ।

कैसे मैं एक सी# वस्तु में एक JSON तार में .शुद्ध?

जब का उपयोग कर मॉडल के वर्गों, अपने डेटा को आम तौर पर दृढ़ता से टाइप किया जब तक आप मैन्युअल रूप से शुरू लेखन JSON का उपयोग करें या शब्दकोश प्रकार के । यदि आप बाहरी संदेश सत्यापन के साथ, मिला हुआ स्कीमा रजिस्ट्री है एक उदाहरण का समर्थन करता है कि JSONSchema और JsonSerializer से confluent-dotnet-kafka परियोजना का समर्थन करता है ।

2021-11-23 22:27:28

सिर्फ एक अनुवर्ती प्रश्न है । क्या आप जानते हैं कि अगर मैं कर सकते हैं की सीमा संदेश आकार और वहाँ एक तरीका है के लिए निर्माता की जांच करने के लिए क्या है के आकार घटना भेजने से पहले और नहीं की अनुमति संदेश भेजने के लिए यदि का आकार की तुलना में अधिक है की सीमा?
Learn AspNet

काफ्का के लिए एक डिफ़ॉल्ट सीमा के 1MB संदेश बैचों. यदि आप आकार पाने के धारावाहिक बाइट सरणी, किया जाना चाहिए कि एक करीबी सन्निकटन की एक व्यक्तिगत रिकॉर्ड का आकार (वहाँ अतिरिक्त भूमि के ऊपर इस तरह के रूप में रिकॉर्ड हेडर और timestamps, हालांकि)
OneCricketeer

धन्यवाद । कर सकते हैं आप उत्तर दें: stackoverflow.com/questions/70097676/...
Learn AspNet

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में