Beispiel #1
0
        /// <summary>
        /// Перераспределение сообщений в очередях
        /// </summary>
        /// <param name="queueOf">Название очереди, из которой берутся сообщения</param>
        /// <param name="exchange">Точка распределения</param>
        /// <param name="routingQueueIn">Название маршрутизации очереди, в которую отправляются сообщения</param>
        public void RedistributionQueue(string queueOf, string exchange, string routingQueueIn)
        {
            IModel channel = null;

            try
            {
                channel = ConnectionRabbit.CreateModel();
                while (true)
                {
                    BasicGetResult result = channel.BasicGet(queueOf, false);
                    if (result != null)
                    {
                        channel.BasicPublish(exchange, routingQueueIn, null, result.Body);
                        channel.BasicAck(result.DeliveryTag, false);
                    }
                    else
                    {
                        break;
                    }
                }
            }
            catch (Exception exception)
            {
                Log.Error(exception.ToString);
                throw new RabbitmqException();
            }
            finally
            {
                if (channel != null)
                {
                    channel.Close();
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Перераспределение сообщений в очередях
        /// </summary>
        /// <param name="queueOf">Очередь, из которой берутся сообщения</param>
        /// <param name="exchange">Точка распределения</param>
        /// <param name="routingQueueIn">Название маршрутизации очереди, в которую отправляются сообщения</param>
        public void RedistributionQueue(Queue <string> queueOf, string exchange, string routingQueueIn)
        {
            IModel channel = null;

            try
            {
                channel = ConnectionRabbit.CreateModel();
                while (true)
                {
                    if (queueOf.Count != 0)
                    {
                        string book             = queueOf.Peek();
                        byte[] messageBodyBytes = Encoding.UTF8.GetBytes(book);
                        channel.BasicPublish(exchange, routingQueueIn, null, messageBodyBytes);
                        queueOf.Dequeue();
                    }
                    else
                    {
                        break;
                    }
                }
            }
            catch (Exception exception)
            {
                Log.Error(exception.ToString);
                throw new RabbitmqException();
            }
            finally
            {
                if (channel != null)
                {
                    channel.Close();
                }
            }
        }