Просмотр исходного кода

Add Kafka options to support custom header to add offset and partition into CapHeader. #374

master
Savorboard 5 лет назад
Родитель
Сommit
e15f518532
2 измененных файлов: 15 добавлений и 0 удалений
  1. +6
    -0
      src/DotNetCore.CAP.Kafka/CAP.KafkaOptions.cs
  2. +9
    -0
      src/DotNetCore.CAP.Kafka/KafkaConsumerClient.cs

+ 6
- 0
src/DotNetCore.CAP.Kafka/CAP.KafkaOptions.cs Просмотреть файл

@@ -5,6 +5,7 @@ using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using Confluent.Kafka;

// ReSharper disable once CheckNamespace
namespace DotNetCore.CAP
@@ -43,6 +44,11 @@ namespace DotNetCore.CAP
/// </summary>
public string Servers { get; set; }

/// <summary>
/// If you need to get offset and partition and so on.., you can use this function to write additional header into <see cref="CapHeader"/>
/// </summary>
public Func<ConsumeResult<string, byte[]>, List<KeyValuePair<string, string>>> CustomHeaders { get; set; }

internal IEnumerable<KeyValuePair<string, string>> AsKafkaConfig()
{
if (_kafkaConfig == null)


+ 9
- 0
src/DotNetCore.CAP.Kafka/KafkaConsumerClient.cs Просмотреть файл

@@ -62,6 +62,15 @@ namespace DotNetCore.CAP.Kafka
}
headers.Add(Messages.Headers.Group, _groupId);

if (_kafkaOptions.CustomHeaders != null)
{
var customHeaders = _kafkaOptions.CustomHeaders(consumerResult);
foreach (var customHeader in customHeaders)
{
headers.Add(customHeader.Key, customHeader.Value);
}
}

var message = new TransportMessage(headers, consumerResult.Value);

OnMessageReceived?.Invoke(consumerResult, message);


Загрузка…
Отмена
Сохранить