コード例 #1
0
        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;
        }
コード例 #2
0
        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;
        }