public KafkaProducer(ProduserOption option, ILogger logger) { _option = option; _logger = logger; var config = new Dictionary <string, object> { { "bootstrap.servers", option.BrokerEndpoints }, { "api.version.request", true }, { "socket.blocking.max.ms", 1 }, { "queue.buffering.max.ms", 5 }, { "queue.buffering.max.kbytes", 10240 }, #if DEBUG { "debug", "msg" }, #endif { "default.topic.config", new Dictionary <string, object> { { "message.timeout.ms", 3000 }, //таймаут на подключение к брокеру (если таймаут вышел, то выставляется message.Error в ответе) { "request.required.acks", -1 } // гарантированная доставка сообщения до конкретного партишена. (самая высокая гарантия доставки в брокера) } } }; _producer = new Producer <Null, string>(config, new NullSerializer(), new StringSerializer(Encoding.UTF8)); _producer.OnLog += OnLog; _producer.OnError += OnError; }
public Device(DeviceOption option, IEnumerable <IExchange <TIn> > exchanges, IEventBus eventBus, Func <ProduserOption, Owned <IProduser> > produser4DeviceRespFactory, ProduserOption produser4DeviceOption, ILogger logger) { Option = option; Exchanges = exchanges.ToList(); _eventBus = eventBus; _logger = logger; var produserOwner = produser4DeviceRespFactory(produser4DeviceOption); _produserOwner = produserOwner; //можно создать/удалить produser в любое время используя фабрику и Owner _produser = produserOwner.Value; TopicName4MessageBroker = null; }