private void Ping() { PingPeer ping = new PingPeer(); //IBasicProperties proper = channel.CreateBasicProperties(); //proper.ReplyTo = replyQueueName; channel.BasicPublish(exchange: "", routingKey: "rpc_queue", basicProperties: props, body: ping.Serializer()); //channel.BasicPublish(exchange: "", routingKey: "rpc_queue", basicProperties: props, body: null); }
public ClientsAPI() { ConnectionFactory factory = new ConnectionFactory() { UserName = "******", Password = "******", HostName = "192.168.21.130" }; connection = factory.CreateConnection(); channel = connection.CreateModel(); replyQueueName = channel.QueueDeclare().QueueName; consumer = new EventingBasicConsumer(channel); props = channel.CreateBasicProperties(); props.ReplyTo = replyQueueName; channel.BasicConsume(queue: replyQueueName, autoAck: true, consumer: consumer); consumer.Received += (model, ea) => { _lastUpDate = DateTime.UtcNow; Object obtained = ea.Body.Deserializer(); switch (obtained) { case PingPeer p: PingPeer ping = new PingPeer(); channel.BasicPublish(exchange: "", routingKey: "MasterClient", basicProperties: props, body: ping.Serializer()); break; case RegistrationResponse r: RegistrationResponse("after register you should to call login function"); break; case LoginResponse lr: LoginResponse(lr.SessionId); break; case LogoutResponse lr: LogoutResponse(); break; case LoginBySessionResponse lbsr: LoginBySessionResponse(); break; case BackError er: BackErrorHandler(er); break; default: throw new Exception("Type if different! Server sent unknown type!"); } }; FirstPing(); }
//need only for test or just for first ping(in production first connect will by some another reason) private void FirstPing() { PingPeer ping = new PingPeer(); channel.BasicPublish(exchange: "", routingKey: "MasterClient", basicProperties: props, body: ping.Serializer()); }