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); } }
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); }