Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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
 });