예제 #1
0
        public BaseProducer(ExchangeTypes type, RabbitMQConnectionModel server, RabbitMQChannelModel queue)
        {
            //1.创建连接
            _connection = server.Factory.CreateConnection();
            //2.创建通道
            _channel = _connection.CreateModel();
            //队列配置
            _queue = queue;

            switch (type)
            {
            case ExchangeTypes.direct:
                //3.声明一个交换机
                _channel.ExchangeDeclare(queue.ExchangeName, ExchangeType.Direct, true, false);
                break;

            case ExchangeTypes.topic:
                break;
            }
            if (type != ExchangeTypes.topic)
            {
                //4.声明一个队列
                _channel.QueueDeclare(_queue.QueueName,
                                      queue.Durable, _queue.Exclusive,
                                      queue.AutoDelete);
                //5.将队列绑定到交换机
                _channel.QueueBind(queue.QueueName, queue.ExchangeName, queue.ExchangeName, null);
            }
        }
예제 #2
0
 public RabbitMQDefaultConsumer(RabbitMQConnectionModel server, RabbitMQChannelModel queue)
 {
     //创建连接
     Connection = server.Factory.CreateConnection();
     //创建通道
     Channel = Connection.CreateModel();
     //队列配置
     Queue = queue;
     //事件基本消费者
     Consumer = new EventingBasicConsumer(Channel);
 }
예제 #3
0
        /// <summary>
        /// 创建生产者
        /// </summary>
        /// <param name="type"></param>
        /// <param name="server"></param>
        /// <param name="queue"></param>
        /// <returns></returns>
        public static BaseProducer CreateProducer(ExchangeTypes type, RabbitMQConnectionModel server, RabbitMQChannelModel queue)
        {
            return(new RabbitMQDefaultProducer(server, queue));

            /*var producer = new RabbitMQProducerModel();
             * //创建连接
             * producer.Connection = server.Factory.CreateConnection();
             * //创建通道
             * producer.Channel = producer.Connection.CreateModel();
             * //队列配置
             * producer.Queue = queue;
             * switch (type)
             * {
             *  case ExchangeTypes.topic:
             *      //声明一个队列
             *      producer.Channel.QueueDeclare(queue.QueueName, queue.Durable, queue.Exclusive, queue.AutoDelete);
             *      break;
             * }
             * return producer;*/
        }
예제 #4
0
 public RabbitMQDefaultProducer(RabbitMQConnectionModel server, RabbitMQChannelModel queue) : base(ExchangeTypes.defult, server, queue)
 {
 }