Example #1
0
 public StructuralPattern()
 {
     _proxyDemo     = new ProxyDemo();
     _flyweightDemo = new FlyweightDemo();
     _adapterDemo   = new AdapterDemo();
     _bridgeDemo    = new BridgeDemo();
     _decoratorDemo = new DecoratorDemo();
     _facadeDemo    = new FacadeDemo();
 }
        public override void Subscribe()
        {
            try
            {
                Console.WriteLine("Subscribe start:");
                Connection = RabbitMQHelper.CreateConnectFactory(constants).CreateConnection();
                Channel    = Connection.CreateModel();
                Channel.BasicQos(0, 1, false);
                Consumer           = new EventingBasicConsumer(Channel);
                Consumer.Received += (model, eventArgs) =>
                {
                    try
                    {
                        var bytes  = eventArgs.Body;
                        var doctor = Deserialize <BaseMessage <DoctorInfoMQ> >(bytes).Data;

                        var proxy  = new ProxyDemo();
                        var result = proxy.SendDoctorInfo(doctor.DoctorId, doctor.DoctorName, doctor.Introduce, doctor.Level, doctor.PhoneNumber, doctor.ServiceDeptName, doctor.Speciality, doctor.HeadImgUrl);
                        if (result.Item1)
                        {
                            Channel.BasicAck(eventArgs.DeliveryTag, false);
                        }
                        else
                        {
                            RejectInvoke(Channel, eventArgs);
                        }
                    }
                    catch (Exception ex)
                    {
                        var messagex = ex.Message;
                        Channel.BasicAck(eventArgs.DeliveryTag, false);
                    }
                };
                //消费者 订阅 消息队列
                Channel.BasicConsume(constants.TAG + "DOCTORINFO_QUEUE", false, Consumer);//需要接受方发送ack回执,删除消息
            }
            catch (Exception ex)
            {
                Console.WriteLine("Execptions:{0}", ex.Message);
            }
        }