public void WriteToKafka(T payload, Action <Task> deliveryCallback = null) { if (payload == null) { throw new ArgumentNullException(nameof(payload)); } _kafKaProducer.Write(_avroSerializer.Serialize(payload), _topic, deliveryCallback); }
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)); }
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)); }
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)); }
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)); }
/// <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); }
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)); } }