2025-04-09 14:33:20 +08:00
|
|
|
|
using Confluent.Kafka;
|
2025-04-17 13:35:08 +08:00
|
|
|
|
using JiShe.CollectBus.Common.Consts;
|
2025-05-23 10:07:47 +08:00
|
|
|
|
using JiShe.CollectBus.Common.Extensions;
|
2025-04-09 14:33:20 +08:00
|
|
|
|
using JiShe.CollectBus.Kafka.Consumer;
|
2025-04-19 00:30:58 +08:00
|
|
|
|
using JiShe.CollectBus.Kafka.Internal;
|
2025-04-14 19:10:27 +08:00
|
|
|
|
using JiShe.CollectBus.Kafka.Producer;
|
2025-04-15 11:15:22 +08:00
|
|
|
|
using Microsoft.AspNetCore.Builder;
|
2025-04-09 14:33:20 +08:00
|
|
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
2025-05-23 10:07:47 +08:00
|
|
|
|
using Microsoft.Extensions.Options;
|
2025-04-15 11:15:22 +08:00
|
|
|
|
using System.Reflection;
|
|
|
|
|
|
using Volo.Abp;
|
|
|
|
|
|
using Volo.Abp.DependencyInjection;
|
2025-04-09 14:33:20 +08:00
|
|
|
|
using Volo.Abp.Modularity;
|
2025-04-15 11:15:22 +08:00
|
|
|
|
using static Confluent.Kafka.ConfigPropertyNames;
|
2025-04-02 17:54:12 +08:00
|
|
|
|
|
2025-04-03 18:05:17 +08:00
|
|
|
|
namespace JiShe.CollectBus.Kafka
|
2025-04-02 17:54:12 +08:00
|
|
|
|
{
|
|
|
|
|
|
public class CollectBusKafkaModule : AbpModule
|
|
|
|
|
|
{
|
|
|
|
|
|
public override void ConfigureServices(ServiceConfigurationContext context)
|
|
|
|
|
|
{
|
2025-04-17 11:42:35 +08:00
|
|
|
|
var configuration = context.Services.GetConfiguration();
|
2025-04-17 13:35:08 +08:00
|
|
|
|
//var kafkaSection = configuration.GetSection(CommonConst.Kafka);
|
2025-05-23 10:07:47 +08:00
|
|
|
|
//KafkaOptionConfig kafkaOptionConfig = new KafkaOptionConfig();
|
2025-04-17 13:35:08 +08:00
|
|
|
|
//kafkaSection.Bind(kafkaOptionConfig);
|
2025-05-23 10:07:47 +08:00
|
|
|
|
//Configure<KafkaOptionConfig>(kafkaSection);
|
2025-04-17 13:35:08 +08:00
|
|
|
|
Configure<KafkaOptionConfig>(options =>
|
2025-04-17 11:42:35 +08:00
|
|
|
|
{
|
2025-04-17 13:35:08 +08:00
|
|
|
|
configuration.GetSection(CommonConst.Kafka).Bind(options);
|
|
|
|
|
|
});
|
|
|
|
|
|
|
2025-04-14 19:10:27 +08:00
|
|
|
|
// 注册Producer
|
2025-04-16 09:54:21 +08:00
|
|
|
|
context.Services.AddSingleton<IProducerService, ProducerService>();
|
2025-04-14 19:10:27 +08:00
|
|
|
|
// 注册Consumer
|
2025-04-16 09:54:21 +08:00
|
|
|
|
context.Services.AddSingleton<IConsumerService, ConsumerService>();
|
2025-04-18 08:22:52 +08:00
|
|
|
|
|
2025-04-23 13:59:15 +08:00
|
|
|
|
// 注册Polly
|
|
|
|
|
|
context.Services.AddSingleton<KafkaPollyPipeline>();
|
|
|
|
|
|
|
2025-05-23 10:07:47 +08:00
|
|
|
|
var topics = ProtocolConstExtensions.GetAllTopicNamesByIssued();
|
|
|
|
|
|
topics.AddRange(ProtocolConstExtensions.GetAllTopicNamesByReceived());
|
|
|
|
|
|
|
|
|
|
|
|
// 注册任务调度
|
|
|
|
|
|
context.Services.AddSingleton<KafkaTaskScheduler>();
|
|
|
|
|
|
|
2025-04-18 09:28:48 +08:00
|
|
|
|
//context.Services.AddHostedService<HostedService>();
|
2025-04-02 17:54:12 +08:00
|
|
|
|
}
|
2025-04-15 11:15:22 +08:00
|
|
|
|
|
2025-04-19 00:30:58 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 在初始化之前,初始化Kafka Topic
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="context"></param>
|
|
|
|
|
|
public override void OnPreApplicationInitialization(ApplicationInitializationContext context)
|
2025-04-15 11:15:22 +08:00
|
|
|
|
{
|
|
|
|
|
|
var app = context.GetApplicationBuilder();
|
2025-04-19 00:30:58 +08:00
|
|
|
|
app.ApplicationServices.UseInitKafkaTopic();
|
|
|
|
|
|
}
|
2025-04-17 18:08:27 +08:00
|
|
|
|
|
2025-04-19 00:30:58 +08:00
|
|
|
|
public override void OnApplicationInitialization(ApplicationInitializationContext context)
|
|
|
|
|
|
{
|
|
|
|
|
|
var app = context.GetApplicationBuilder();
|
2025-04-17 13:01:26 +08:00
|
|
|
|
// 注册Subscriber
|
2025-04-18 09:28:48 +08:00
|
|
|
|
app.ApplicationServices.UseKafkaSubscribe();
|
2025-04-17 18:08:27 +08:00
|
|
|
|
|
2025-04-17 11:42:35 +08:00
|
|
|
|
// 获取程序集
|
2025-04-17 13:01:26 +08:00
|
|
|
|
//app.UseKafkaSubscribers(Assembly.Load("JiShe.CollectBus.Application"));
|
2025-04-15 11:15:22 +08:00
|
|
|
|
}
|
2025-04-02 17:54:12 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|