You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.9 KiB

using Confluent.Kafka;
using System;
using System.Collections.Generic;
using System.Text;
namespace VOL.Core.KafkaManager.IService
{
public interface IKafkaConsumer<TKey, TValue> : IDisposable
{
/// <summary>
/// 订阅回调模式-消费(持续订阅)
/// </summary>
/// <param name="Func">回调函数,若配置为非自动提交(默认为否),则通过回调函数的返回值判断是否提交</param>
/// <param name="Topic">主题</param>
void Consume(Func<ConsumeResult<TKey, TValue>, bool> Func, string Topic);
/// <summary>
/// 批量订阅回调模式-消费(持续订阅)
/// </summary>
/// <param name="Func">回调函数,若配置为非自动提交(默认为否),则通过回调函数的返回值判断是否提交</param>
/// <param name="Topics">主题集合</param>
void ConsumeBatch(Func<ConsumeResult<TKey, TValue>, bool> Func, List<string> Topics);
/// <summary>
/// 批量消费模式-单次消费(消费出当前Kafka缓存的所有数据,并持续监听 300ms,如无新数据生产,则返回(最多一次消费 100条)
/// </summary>
/// <param name="Topic">主题</param>
/// <param name="TimeOut">持续监听时间,单位ms 默认值:300ms</param>
/// <param name="MaxRow">最多单次消费行数 默认值:100行</param>
/// <returns>待消费数据</returns>
List<ConsumeResult<TKey, TValue>> ConsumeOnce(string Topic, int TimeOut = 300, int MaxRow = 100);
/// <summary>
/// 单笔消费模式-单行消费
/// </summary>
/// <param name="Topic">主题</param>
/// <param name="TimeOut">持续监听时间,单位ms 默认值:300ms</param>
/// <returns>待消费数据</returns>
ConsumeResult<TKey, TValue> ConsumeOneRow(string Topic, int TimeOut = 300);
}
}