public async Task <object> ProduceByOffset([FromBody] MessagePostRequest request) { ConsumeResult <string, string> consumeResult = null; using (var consumer = GetConsumer(request.Broker, MaintainerGroup)) { var topicPartitionOffset = new TopicPartitionOffset(new TopicPartition(request.Topic, request.Partition), request.Offset); consumer.Assign(topicPartitionOffset); consumer.Seek(topicPartitionOffset); consumeResult = consumer.Consume(TimeSpan.FromSeconds(1)); } if (consumeResult == null) { throw new Exception($"message doesn't exist"); } var producer = GetProducer(request.Broker); var produceResult = await producer.ProduceAsync(request.Topic, new Message <string, string> { Key = consumeResult.Key, Value = consumeResult.Value, Headers = consumeResult.Headers }); return(produceResult); }
public dynamic GetMessageByOffset([FromQuery] MessageQueryRequest request) { using (var consumer = GetConsumer(request.Broker, MaintainerGroup)) { var topicPartitionOffset = new TopicPartitionOffset(new TopicPartition(request.Topic, request.Partition), request.Offset); consumer.Assign(topicPartitionOffset); consumer.Seek(topicPartitionOffset); var result = consumer.Consume(TimeSpan.FromSeconds(1)); return(new { result?.Partition, result?.Topic, result?.Offset, result?.Message }); } }
/// <inheritdoc/> public void Seek(TopicPartitionOffset tpo) => kafkaHandle.Seek(tpo.Topic, tpo.Partition, tpo.Offset, -1);
/// <inheritdoc/> public void Assign(TopicPartitionOffset partition) => Assign(new List <TopicPartitionOffset> { partition });