public static void UseInterServiceCommunication(this IServiceCollection services, InterServiceCommunicationSettings settings) { IMessageClient messageClient = null; MessageClientSettings producerSettings = null; switch (settings.Type) { case Enumerations.InterServiceCommunicationType.RabbitMQ: messageClient = new RabbitMQMessageClient(); break; case Enumerations.InterServiceCommunicationType.Kafka: default: messageClient = new KafkaMessageClient(); producerSettings = new KafkaMessageSettings() { BrokerList = settings.Address, Topics = settings.Receivers, ServiceName = settings.ServiceName }; break; } messageClient.InitializeMessageClient(producerSettings); services.AddSingleton(messageClient); }
public void InitializeMessageClient(MessageClientSettings producerSettings) { if (producerSettings == null) { producerSettings = GetDefaultSettings(); } else if (!(producerSettings is KafkaMessageSettings)) { throw new Exception("Settings should be KafkaSettings"); } _kafkaSettings = producerSettings as KafkaMessageSettings; fProducerConfig = new ProducerConfig { BootstrapServers = _kafkaSettings.BrokerList }; }