Exemplo n.º 1
0
        public async Task ProduceEvent(IEvent @event)
        {
            var eventEnvelope   = MapEventToEnvelope(@event);
            var serializedEvent = SerializeEventEnvelope(eventEnvelope);

            var headers = new Headers {
                { HeadersValue.HeaderName, stringSerializer.Serialize(string.Empty, @event.GetType().GetFriendlyTypeName()) }
            };
            var partitionKey = $"A:{globalSettings.Value.ServiceId}";

            var message = new Message <byte[], byte[]>
            {
                Value   = stringSerializer.Serialize(kafkaTopicProvider.GetTopicName(), serializedEvent),
                Key     = stringSerializer.Serialize(kafkaTopicProvider.GetTopicName(), partitionKey),
                Headers = headers
            };

            logger.LogDebug($"Event produced: {@event.GetType().Name}");

            using (var producer = new Producer <byte[], byte[]>(GetKafkaConfigs(), new ByteArraySerializer(), new ByteArraySerializer()))
            {
                await producer.ProduceAsync(kafkaTopicProvider.GetTopicName(), message);
            }
        }
        private void ResubscribeToTopics()
        {
            consumer.Subscribe(kafkaTopicProvider.GetTopicName());

            logger.LogDebug($"Kafka Consumer. Subscribed to: [{string.Join(", ", consumer.Subscription)}]");
        }