コード例 #1
0
        public bool SendMsgToMachines(KeyValueMessage message, CloudToMachineType machineType)
        {
            if (!isConnectedToServer)
            {
                throw new InvalidOperationException("Please call InitConfigAndConnect medthod first!");
            }
            try
            {
                var _noQueueChannel = _connectToRabbitMqService.GetNoQueuedModel();
                _noQueueChannel.ExchangeDeclare(RabbitMqConstants.EXCHANGE_CLOUD_TO_MACHINE_NOQUEUE, "fanout");
                var msgStr = JsonConvert.SerializeObject(message);
                var body   = MessagePackSerializer.Serialize(msgStr);

                _noQueueChannel.BasicPublish(exchange: RabbitMqConstants.EXCHANGE_CLOUD_TO_MACHINE_NOQUEUE,
                                             routingKey: "",
                                             basicProperties: null,
                                             body: body);

                MessageLogUtil.Log($"Send no queue message to cloud: {JsonConvert.SerializeObject(message)}");
                return(true);
            }
            catch (Exception e)
            {
                MessageLogUtil.Error("SendMsgToMachine", e);
                ErrorAction?.Invoke(e, "SendMsgToMachine");
                return(false);
            }
        }
コード例 #2
0
        private static void ConsumeClientNoQueuedMessages()
        {
            var _clientToCloudNoQueueChannel = _connectToRabbitMqService.GetNoQueuedModel();

            _clientToCloudNoQueueChannel.ExchangeDeclare(RabbitMqConstants.EXCHANGE_CLOUD_TO_MACHINE_NOQUEUE, "fanout");
            var queueName = _clientToCloudNoQueueChannel.QueueDeclare().QueueName;

            _clientToCloudNoQueueChannel.QueueBind(queueName, RabbitMqConstants.EXCHANGE_CLOUD_TO_MACHINE_NOQUEUE, "");

            var consumer = new EventingBasicConsumer(_clientToCloudNoQueueChannel);

            consumer.Received += (model, ea) =>
            {
                var body    = ea.Body;
                var message = MessagePackSerializer.Deserialize <string>(body);
                //var json = MessagePackSerializer.ToJson(body);
                Console.WriteLine(message);
            };
            _clientToCloudNoQueueChannel.BasicConsume(queue: queueName,
                                                      autoAck: true,
                                                      consumer: consumer);
        }