public static ITomatoLogClient Create(LogFlowTypes flowType, TomatoLogSinkConfiguration configuration)
        {
            switch (flowType)
            {
            case LogFlowTypes.Redis: {
                var eventOption = configuration.Redis;
                if (eventOption == null)
                {
                    throw new ArgumentNullException(nameof(eventOption));
                }
                return(new TomatoLogClientRedis(eventOption));
            }

            case LogFlowTypes.RabbitMq: {
                var eventOption = configuration.RabbitMQ;
                if (eventOption == null)
                {
                    throw new ArgumentNullException(nameof(eventOption));
                }
                return(new TomatoLogClientRabbitMQ(eventOption));
            }

            case LogFlowTypes.Kafka: {
                var eventOption = configuration.Kafka;
                if (eventOption == null)
                {
                    throw new ArgumentNullException(nameof(eventOption));
                }
                return(new TomatoLogClientKafka(eventOption));
            }

            default:
                throw new InvalidOperationException("Unknown flow type.");
            }
        }
Exemple #2
0
 public static void Set(ITomatoLogClient client, LogFlowTypes flowType)
 {
     CachedClient = client ?? throw new ArgumentNullException(nameof(client));
     FlowType     = flowType;
 }