protected override void BindQueue <T>(RabbitMQ.Client.IModel model, QueueSetupData queue, string exchangeName, string queueName, string routingKey)
 {
     if (queue is PriorityQueueSetupData)
     {
         var maxPriority = (queue as PriorityQueueSetupData).MaxPriorityLevel;
         for (uint i = 0; i <= maxPriority; i++)
         {
             try
             {
                 IDictionary arguments = new HybridDictionary();
                 arguments.Add("x-match", "all");
                 arguments.Add("Priority", i.ToString(CultureInfo.InvariantCulture));
                 arguments.Add("RoutingKey", routingKey);
                 //http://www.rabbitmq.com/tutorials/amqp-concepts.html
                 //http://lostechies.com/derekgreer/2012/03/28/rabbitmq-for-windows-exchange-types/
                 model.QueueBind(GetPriorityQueueName <T>(queueName, i), exchangeName, routingKey /*It'll be ignored as AMQP spec*/, arguments);
             }
             catch (Exception ex)
             {
                 _watcher.Error(ex);
             }
         }
     }
     else
     {
         base.BindQueue <T>(model, queue, exchangeName, queueName, routingKey);
     }
 }
 protected override void DeleteQueue <T>(RabbitMQ.Client.IModel model, QueueSetupData queue, string queueName)
 {
     if (queue is PriorityQueueSetupData)
     {
         var maxPriority = (queue as PriorityQueueSetupData).MaxPriorityLevel;
         for (uint i = 0; i <= maxPriority; i++)
         {
             try
             {
                 model.QueueDelete(GetPriorityQueueName <T>(queueName, i));
             }
             catch (OperationInterruptedException oie)
             {
                 if (oie.ShutdownReason.ReplyText.StartsWith("NOT_FOUND - no queue "))
                 {
                     _watcher.WarnFormat(oie.ShutdownReason.ReplyText);
                 }
                 else
                 {
                     _watcher.Error(oie);
                 }
             }
             catch (Exception ex)
             {
                 _watcher.Error(ex);
             }
         }
     }
     else
     {
         base.DeleteQueue <T>(model, queue, queueName);
     }
 }
Esempio n. 3
0
        private void PullMQ()
        {
            Console.WriteLine("Begin pull msg with new thread");

            var MQQueueName = ConfigurationManager.AppSettings["MQQueueName"];
            var factory     = MQUtils.MQFactory;

            using (var conn = factory.CreateConnection())
            {
                using (RabbitMQ.Client.IModel channel = conn.CreateModel())
                {
                    IDictionary <string, object> queueArgs = new Dictionary <string, object>
                    {
                        { "x-ha-policy", "all" }
                    };
                    channel.QueueDeclare(queue: MQQueueName,
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: queueArgs);
                    channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);
                    while (true)
                    {
                        if (!MQUtils.Pull(channel, ExcuteMessage))
                        {
                            Console.WriteLine("{0} - Queue is empty!", Thread.CurrentThread.ManagedThreadId);
                            Thread.Sleep(1000);
                        }
                    }
                }
            }
        }
Esempio n. 4
0
        public IBasicGetResult Get(IQueue queue)
        {
            Preconditions.CheckNotNull(queue, "queue");

            //var result = clientCommandDispatcher.Invoke(x => x.BasicGet(queue.Name, false));
            RabbitMQ.Client.IModel model = connection.CreateModel();
            model.ContinuationTimeout = connectionConfiguration.ContinuationTimeout;
            var result = model.BasicGet(queue.Name, false);

            if (result == null)
            {
                return(null);
            }
            else
            {
                model.BasicAck(result.DeliveryTag, false);
            }

            var getResult = new BasicGetResult(
                result.Body,
                new MessageProperties(result.BasicProperties),
                new MessageReceivedInfo(
                    "",
                    result.DeliveryTag,
                    result.Redelivered,
                    result.Exchange,
                    result.RoutingKey,
                    queue.Name
                    )
                );

            logger.DebugWrite("Message Get from queue '{0}'", queue.Name);

            return(getResult);
        }
Esempio n. 5
0
        protected override void Implement(RabbitMQ.Client.IModel channel, RabbitMQ.Client.Events.BasicDeliverEventArgs ea)
        {
            var body    = ea.Body;
            var message = Encoding.UTF8.GetString(body);

            Console.WriteLine(" worker1 Received {0}", message);
            System.Threading.Thread.Sleep(10000);
            channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
        }
        protected virtual Task PublishToErrorExchangeAsync(IPipeContext context, IModel channel, Exception exception, ExchangeDeclaration exchange)
        {
            var args = context.GetDeliveryEventArgs();

            args.BasicProperties.Headers?.TryAdd(PropertyHeaders.Host, Environment.MachineName);
            args.BasicProperties.Headers?.TryAdd(PropertyHeaders.ExceptionType, exception.GetType().Name);
            args.BasicProperties.Headers?.TryAdd(PropertyHeaders.ExceptionStackTrace, exception.StackTrace);
            channel.BasicPublish(exchange.Name, args.RoutingKey, false, args.BasicProperties, args.Body);
            return(Task.FromResult(0));
        }
 protected override void DeclareExchange(ExchangeSetupData exchange, RabbitMQ.Client.IModel model, string exchangeName)
 {
     if (exchange != null && exchange.ExchangeType == "headers")
     {
         base.DeclareExchange(exchange, model, exchangeName);
     }
     else
     {
         throw new Exception("Expect exchange type headers");
     }
 }
Esempio n. 8
0
 public QueuePushHandle()
 {
     sqlDb   = new SqlDb(QT.Entities.Server.ConnectionStringCrawler);
     factory = new RabbitMQ.Client.ConnectionFactory()
     {
         HostName = QT.Entities.Server.RabbitMQ_Host,
         Port     = QT.Entities.Server.RabbitMQ_Port,
         UserName = QT.Entities.Server.RabbitMQ_User,
         Password = QT.Entities.Server.RabbitMQ_Pass
     };
     connection = factory.CreateConnection();
     chanel     = connection.CreateModel();
 }
Esempio n. 9
0
        public void Dispose()
        {
            if (_model != null)
            {
                _model.Dispose();
                _model = null;
            }

            if (_connection != null)
            {
                _connection.Dispose();
                _connection = null;
            }
        }
Esempio n. 10
0
        public void Dispose()
        {
            if (_model != null)
            {
                _model.Dispose();
                _model = null;
            }

            if (_connection != null)
            {
                _connection.Dispose();
                _connection = null;
            }
        }
 private static void CreateAndBind_TopicExchange(RabbitMQ.Client.IModel RabbitMqModel)
 {
     var topicExchange1 = rabbitMqDefinationFunctions.CreateAndBindExchange(
         RabbitMqModel,
         new ExchangeModel
     {
         ExchangeName = "topicExchange1",
         ExchangeType = ExchangeType.Topic
     },
         "topicExchange1routeKey1",
         new QueueModel
     {
         QueueName = "queue4"
     }
         );
 }
 private static void CreateAndBind_HeadersExchange(RabbitMQ.Client.IModel RabbitMqModel)
 {
     var headresExchange1 = rabbitMqDefinationFunctions.CreateAndBindExchange(
         RabbitMqModel,
         new ExchangeModel
     {
         ExchangeName = "headresExchange1",
         ExchangeType = ExchangeType.Headers
     },
         "headresExchange1routeKey1",
         new QueueModel
     {
         QueueName = "queue3"
     }
         );
 }
 private static void CreateAndBind_FanoutExchange(RabbitMQ.Client.IModel RabbitMqModel)
 {
     var fanoutExchange1 = rabbitMqDefinationFunctions.CreateAndBindExchange(
         RabbitMqModel,
         new ExchangeModel
     {
         ExchangeName = "fanoutExchange1",
         ExchangeType = ExchangeType.Fanout
     },
         "fanoutExchange1routeKey1",
         new QueueModel
     {
         QueueName = "queue2"
     }
         );
 }
Esempio n. 14
0
 void Start_Example()
 {
     if (UseMQ)
     {
         try
         {
             _mq      = new mQ(MQ_ServerAddress, MQ_Login, MQ_Password);
             _channel = _mq.getChannel();
             MQ       = new mQActions(_channel);
             Debug.Log(" [MQ] connection init done");
         }
         catch (Exception ex)
         {
             Debug.LogException(ex);
         }
     }
 }
 private static void CreateAndBind_DirectExchange(RabbitMQ.Client.IModel RabbitMqModel)
 {
     var directExchange1 = rabbitMqDefinationFunctions.CreateAndBindExchange(
         RabbitMqModel,
         new ExchangeModel
     {
         ExchangeName = "directExchange1",
         ExchangeType = ExchangeType.Direct,
         Durable      = true,
         AutoDelete   = false
     },
         "directExchange1routeKey1",
         new QueueModel
     {
         QueueName  = "queue1",
         Durable    = true,
         Exclusive  = false,
         AutoDelete = false
     }
         );
 }
Esempio n. 16
0
        public MessageReceivedInfo(
            string consumerTag,
            ulong deliverTag,
            bool redelivered,
            string exchange,
            string routingKey,
            string queue,
            RabbitMQ.Client.IModel model)
        {
            Preconditions.CheckNotNull(consumerTag, "consumerTag");
            Preconditions.CheckNotNull(exchange, "exchange");
            Preconditions.CheckNotNull(routingKey, "routingKey");
            Preconditions.CheckNotNull(queue, "queue");

            ConsumerTag = consumerTag;
            DeliverTag  = deliverTag;
            Redelivered = redelivered;
            Exchange    = exchange;
            RoutingKey  = routingKey;
            Queue       = queue;
            Model       = model;
        }
Esempio n. 17
0
 public void Connect()
 {
     _connection = _connectionFactory.CreateConnection(_configurationSettings);
     _model      = _connection.CreateModel();
 }
Esempio n. 18
0
 public ResourceBootstrapService(MinioClient minio, RabbitMQ.Client.IModel model)
 {
     this.minio = minio;
     this.model = model;
 }
        protected override void DeclareQueue <T>(QueueSetupData queue, string queueName, RabbitMQ.Client.IModel model)
        {
            IDictionary arguments = new Dictionary <string, object>();

            if (queue.MessageTimeToLive > 0)
            {
                arguments.Add("x-message-ttl", queue.MessageTimeToLive);
            }
            if (queue.AutoExpire > 0)
            {
                arguments.Add("x-expires", queue.AutoExpire);
            }

            if (queue is PriorityQueueSetupData)
            {
                var maxPriority = (queue as PriorityQueueSetupData).MaxPriorityLevel;
                for (uint i = 0; i <= maxPriority; i++)
                {
                    try
                    {
                        model.QueueDeclare(GetPriorityQueueName <T>(queueName, i), queue.Durable, false,
                                           queue.AutoDelete, arguments);
                    }
                    catch (OperationInterruptedException oie)
                    {
                        if (oie.ShutdownReason.ReplyText.StartsWith("PRECONDITION_FAILED - "))
                        {
                            _watcher.WarnFormat(oie.ShutdownReason.ReplyText);
                        }
                        else
                        {
                            _watcher.Error(oie);
                        }
                    }
                    catch (Exception ex)
                    {
                        _watcher.Error(ex);
                    }
                }
            }
            else
            {
                base.DeclareQueue <T>(queue, queueName, model);
            }
        }
Esempio n. 20
0
        public void Start()
        {
            while (true)
            {
                try
                {
                    RabbitMQServer         rabbitMqServer = RabbitMQManager.GetRabbitMQServer(ConfigCrawler.KeyRabbitMqCrawler);
                    RabbitMQ.Client.IModel channel        = null;

                    while (channel == null)
                    {
                        channel = rabbitMqServer.CreateChannel();
                    }

                    channel.ExchangeDeclare("CrawlerProduct", "topic", true);

                    channel.QueueDeclare(ConfigCrawler.QueueErrorCrawler, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueErrorCrawler, ConfigCrawler.ExchangeErorrCrawler, ConfigCrawler.RoutingKeyErrorCrawler);

                    channel.QueueDeclare(ConfigCrawler.QueueHistoryToSolr, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueHistoryToSolr, ConfigCrawler.ExchangeChangeProduct, ConfigCrawler.RoutingkeyChangeProduct);

                    channel.QueueDeclare(ConfigCrawler.QueueVisitedLinkFindNewToSolr, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueVisitedLinkFindNewToSolr, ConfigCrawler.ExchangeVisitedLinkFindNew, ConfigCrawler.RoutingKeyVisitedLinkFindNew);

                    channel.ExchangeDeclare(ConfigCrawler.ExchangeSessionRunning, "topic", true);
                    channel.QueueDeclare(ConfigCrawler.QueueTrackRunning, true, false, false, null);
                    channel.QueueDeclare(ConfigCrawler.QueueUpdateSessionRunning, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueUpdateSessionRunning, ConfigCrawler.ExchangeSessionRunning, ConfigCrawler.RoutingkeySessionRunning);
                    channel.QueueBind(ConfigCrawler.QueueTrackRunning, ConfigCrawler.ExchangeSessionRunning, ConfigCrawler.RoutingkeySessionRunning);

                    channel.QueueDeclare(ConfigCrawler.QueueCompanyFindnew, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueCompanyFindnew, ConfigCrawler.ExchangeCompanyFindNew, ConfigCrawler.RoutingkeyCompanyFindNew);

                    channel.QueueDeclare(ConfigCrawler.QueueCompanyReload, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueCompanyReload, ConfigCrawler.ExchangeCompanyReload, ConfigCrawler.RoutingkeyCompanyReload);

                    channel.QueueDeclare(ConfigCrawler.QueueEndSessionToSql, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueEndSessionToSql, ConfigCrawler.ExchangeEndSession, ConfigCrawler.RoutingEndSession);
                    channel.QueueDeclare(ConfigCrawler.QueueProductChangeToSql, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueProductChangeToSql, ConfigCrawler.ExchangeChangeProduct, ConfigCrawler.RoutingkeyChangeProduct);

                    channel.QueueDeclare(ConfigCrawler.QueueResetDuplicate, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueResetDuplicate, ConfigCrawler.ExchangeResetDuplicate, ConfigCrawler.RoutingkeyResetDuplicate);

                    channel.QueueDeclare(ConfigCrawler.QueueDuplicateToCache, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueDuplicateToCache, ConfigCrawler.ExchangeDuplicateProductToCache, ConfigCrawler.RoutingKeyDuplicateProductToCache);



                    channel.QueueDeclare(ConfigCrawler.QueueProductChangeToCache, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueProductChangeToCache, ConfigCrawler.ExchangeChangeProduct, ConfigCrawler.RoutingkeyChangeProduct);

                    channel.QueueDeclare(ConfigCrawler.QueueChangeDesc, true, false, false, null);
                    channel.QueueBind(ConfigCrawler.QueueChangeDesc, ConfigCrawler.ExchangeChangeDesc, ConfigCrawler.RoutingkeyChangeDesc);

                    channel.QueueDeclare(ConfigCrawler.QueueAddClassification, true, false, false, null);
                    return;
                }
                catch (Exception ex)
                {
                }
            }
        }
Esempio n. 21
0
 public RabbitMQ.Client.Content.IMessageBuilder WriteMessage(RabbitMQ.Client.IModel ch, Mono.Messaging.IMessage msg)
 {
     throw null;
 }
Esempio n. 22
0
 public void Connect()
 {
     _connection = _connectionFactory.CreateConnection(_configurationSettings);
     _model = _connection.CreateModel();
 }