Exemplo n.º 1
0
        protected RabbitMqClient(RabbitMqConfiguration config)
        {
            _configuration = config;
            var factory = new ConnectionFactory {
                HostName = _configuration.Address, Password = _configuration.Password, Port = _configuration.Port
            };

            _requestQueueName   = _configuration.RequestQueueName;
            _responseQueueName  = _configuration.ResponseQueueName;
            _broadcastQueueName = _configuration.BroadcastQueueName;

            _packetFactory  = new PacketContainerFactory();
            _requestFactory = new PendingRequestFactory();

            _connection = factory.CreateConnection();
            _channel    = _connection.CreateModel();

            _channel.QueueDeclare(_requestQueueName, true, false, false, null);
            _channel.QueueDeclare(_responseQueueName, true, false, false, null);
            _channel.QueueDeclare(_broadcastQueueName, true, false, false, null);

            var consumer = new EventingBasicConsumer(_channel);

            consumer.Received += OnMessage;

            _channel.BasicConsume(_responseQueueName, true, consumer);

            _pendingRequests = new ConcurrentDictionary <Guid, PendingRequest>();
        }
Exemplo n.º 2
0
        private MqttIpcClient(MqttIpcClientConfiguration conf, IIpcPacketRouter router, IIpcSerializer serializer)
        {
            _router          = router;
            _serializer      = serializer;
            _endPoint        = conf.EndPoint;
            _name            = conf.ClientName;
            _responsesQueues = new HashSet <string>();
            _pendingRequests = new ConcurrentDictionary <Guid, PendingRequest>();
            _packetFactory   = new PacketContainerFactory();
            _requestFactory  = new PendingRequestFactory();
            _client          = new MqttFactory().CreateManagedMqttClient(new MqttNetLogger(conf.ClientName));
            ManagedMqttClientOptions options = new ManagedMqttClientOptionsBuilder()
                                               .WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
                                               .WithClientOptions(new MqttClientOptionsBuilder()
                                                                  .WithClientId(_name)
                                                                  .WithTcpServer(_endPoint)
                                                                  .Build())
                                               .Build();

            _client.ApplicationMessageReceived += (sender, args) => OnMessage(args.ClientId, args.ApplicationMessage);
            _client.StartAsync(options).ConfigureAwait(false).GetAwaiter().GetResult();
        }