public void WriteToKafka(T payload, Action <Task> deliveryCallback = null)
 {
     if (payload == null)
     {
         throw new ArgumentNullException(nameof(payload));
     }
     _kafKaProducer.Write(_avroSerializer.Serialize(payload), _topic, deliveryCallback);
 }
Beispiel #2
0
        public byte[] SerializeAvroMsft(InheritedEntity thisObj)
        {
            var serializer = new AvroSerializer(thisObj.GetType());

            using (var ms = new MemoryStream())
            {
                serializer.Serialize(thisObj, ms);
                return(ms.ToArray());
            }
        }
        public byte[] SerializeAvroMsft(InheritedEntity thisObj)
        {
            var serializer = new AvroSerializer(thisObj.GetType());

            using (var ms = new MemoryStream())
            {
                serializer.Serialize(thisObj, ms);
                return ms.ToArray();
            }
        }
 // Note, this can be made faster if we generate the schema file (.avsc)
 // first and then use schema files at runtime.
 // We're skipping that step here (code gen) since the rest of the project
 // doesn't support an init() or codegen() phase (yet!)
 public override dynamic Serialize(object thisObj)
 {
     SaveSchema();
     using (var ms = new MemoryStream())
     {
         serializer.Serialize(thisObj, ms);
         SerBytes = ms.ToArray();
         return(SerBytes);
     }
 }
        public void StringSerDe()
        {
            var avroSerializer = new AvroSerializer <string>(schemaRegistryClient);

            avroSerializer.Configure(new Dictionary <string, object>(), false);
            var avroDeserializer = new AvroDeserializer <string>(schemaRegistryClient);

            avroDeserializer.Configure(new Dictionary <string, object>(), false);
            byte[] bytes;
            bytes = avroSerializer.Serialize(testTopic, "abc");
            Assert.Equal("abc", avroDeserializer.Deserialize(testTopic, bytes));
        }
        public void Incompatible()
        {
            var avroSerializer = new AvroSerializer <string>(schemaRegistryClient);

            avroSerializer.Configure(new Dictionary <string, object>(), false);
            var avroDeserializer = new AvroDeserializer <int>(schemaRegistryClient);

            avroDeserializer.Configure(new Dictionary <string, object>(), false);
            byte[] bytes;
            bytes = avroSerializer.Serialize(testTopic, "Hello world");
            Assert.Throws <global::Avro.AvroException>(() => avroDeserializer.Deserialize(testTopic, bytes));
        }
        public void BytesSerDe()
        {
            var avroSerializer = new AvroSerializer <byte[]>(schemaRegistryClient);

            avroSerializer.Configure(new Dictionary <string, object>(), false);
            var avroDeserializer = new AvroDeserializer <byte[]>(schemaRegistryClient);

            avroDeserializer.Configure(new Dictionary <string, object>(), false);
            byte[] bytes;
            bytes = avroSerializer.Serialize(testTopic, new byte[] { 2, 3, 4 });
            Assert.Equal(new byte[] { 2, 3, 4 }, avroDeserializer.Deserialize(testTopic, bytes));
        }
        public void DoubleSerDe()
        {
            var avroSerializer = new AvroSerializer <double>(schemaRegistryClient);

            avroSerializer.Configure(new Dictionary <string, object>(), false);
            var avroDeserializer = new AvroDeserializer <double>(schemaRegistryClient);

            avroDeserializer.Configure(new Dictionary <string, object>(), false);
            byte[] bytes;
            bytes = avroSerializer.Serialize(testTopic, 123d);
            Assert.Equal(123d, avroDeserializer.Deserialize(testTopic, bytes));
        }
Beispiel #9
0
        public void BoolSerDe()
        {
            var avroSerializer = new AvroSerializer <bool>(schemaRegistryClient);

            avroSerializer.Configure(new Dictionary <string, string>(), false);
            var avroDeserializer = new AvroDeserializer <bool>(schemaRegistryClient);

            avroDeserializer.Configure(new Dictionary <string, string>(), false);
            byte[] bytes;
            bytes = avroSerializer.Serialize(testTopic, true);
            Assert.Equal(true, avroDeserializer.Deserialize(testTopic, bytes, false));
        }
Beispiel #10
0
        public void NullSerDe()
        {
            var avroSerializer = new AvroSerializer <Null>(schemaRegistryClient);

            avroSerializer.Configure(new Dictionary <string, string>(), false);
            var avroDeserializer = new AvroDeserializer <Null>(schemaRegistryClient);

            avroDeserializer.Configure(new Dictionary <string, string>(), false);
            byte[] bytes;
            bytes = avroSerializer.Serialize(testTopic, null);
            Assert.Null(avroDeserializer.Deserialize(testTopic, bytes, false));
        }
Beispiel #11
0
        public void FloatSerDe()
        {
            var avroSerializer = new AvroSerializer <float>(schemaRegistryClient);

            avroSerializer.Configure(new Dictionary <string, string>(), false);
            var avroDeserializer = new AvroDeserializer <float>(schemaRegistryClient);

            avroDeserializer.Configure(new Dictionary <string, string>(), false);
            byte[] bytes;
            bytes = avroSerializer.Serialize(testTopic, 123f);
            Assert.Equal(123f, avroDeserializer.Deserialize(testTopic, bytes, false));
        }
Beispiel #12
0
        /// <inheritdoc cref="IEventFactory.Create{TEvent}"/>
        public Event Create <TEvent>(string aggregateName, TEvent?payload = null) where TEvent : class
        {
            if (string.IsNullOrWhiteSpace(aggregateName))
            {
                throw new ArgumentNullException(nameof(payload));
            }

            // serialize payload
            if (payload is null)
            {
                return(new Event
                {
                    Name = typeof(TEvent).Name,
                    AggregateName = aggregateName,
                    CreatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
                });
            }

            using var schemaRegistry = new CachedSchemaRegistryClient(_schemaRegistryConfig);

            var specificRecord = payload as ISpecificRecord ??
                                 throw new InvalidOperationException(
                                           $"Inserted payload must be a subtype of {nameof(ISpecificRecord)}");

            var serializer           = new AvroSerializer <TEvent>(schemaRegistry).AsSyncOverAsync();
            var serializationContext = new SerializationContext(MessageComponentType.Value, aggregateName);
            var payloadData          = serializer.Serialize(payload, serializationContext);

            return(new Event
            {
                Name = typeof(TEvent).Name,
                AggregateName = aggregateName,
                CreatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
                Payload = new EventPayload
                {
                    DataSchema = specificRecord.Schema.ToString(),
                    Data = payloadData
                }
            });
        }
        public void ISpecificRecord()
        {
            var user = new User
            {
                favorite_color  = "blue",
                favorite_number = 100,
                name            = "awesome"
            };
            var serializer = new AvroSerializer <User>(schemaRegistryClient);

            serializer.Configure(new Dictionary <string, object>(), false);
            var deserializer = new AvroDeserializer <User>(schemaRegistryClient);

            deserializer.Configure(new Dictionary <string, object>(), false);

            var bytes  = serializer.Serialize("topic", user);
            var result = deserializer.Deserialize("topic", bytes);

            Assert.Equal(user.name, result.name);
            Assert.Equal(user.favorite_color, result.favorite_color);
            Assert.Equal(user.favorite_number, result.favorite_number);
        }
Beispiel #14
0
        private static void NewMethod1 <T>()
        {
            var config = new ProducerConfig
            {
                BootstrapServers = "localhost:9094", ClientId = "kuku", LogQueue = true
            };

            Action <DeliveryReport <Null, string> > handler = r => Console.WriteLine(!r.Error.IsError ? "Success" : r.Error.Reason);

            using (var producer = new ProducerBuilder <Null, string>(config).Build())
            {
                byte[] stringValue;
                for (int i = 0; i < 100; ++i)
                {
                    stringValue = s.Serialize("test_topic", new User()
                    {
                        UserName = "******", Password = "******"
                    });
                    //producer.
                }

                producer.Flush(TimeSpan.FromSeconds(10));
            }
        }