Ejemplo n.º 1
0
 public static bool Push(MQMessage message)
 {
     try
     {
         using (var channel = MQConnection.CreateModel())
         {
             channel.QueueDeclare(queue: MQQueueName,
                                  durable: true,
                                  exclusive: false,
                                  autoDelete: false,
                                  arguments: null);
             var properties = channel.CreateBasicProperties();
             properties.Persistent = true;
             //---------------------------------
             channel.BasicPublish(exchange: "",
                                  routingKey: MQQueueName,
                                  basicProperties: properties,
                                  body: message.ObjectToByteArray());
             //--------------------
             return(true);
         }
     }
     catch (Exception ex)
     {
         log.Error(ex);
         return(false);
     }
 }
Ejemplo n.º 2
0
        public static MQMessage Pull()
        {
            //var factory = new ConnectionFactory() { HostName = MQHostName, UserName = MQUserName, Password = MQPassword };
            //using (var connection = factory.CreateConnection())

            try
            {
                using (var channel = MQConnection.CreateModel())
                {
                    channel.QueueDeclare(queue: MQQueueName,
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);
                    //var properties = channel.CreateBasicProperties();
                    //properties.Persistent = true;
                    channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);
                    BasicGetResult result = channel.BasicGet(MQQueueName, false);
                    if (result != null)
                    {
                        MQMessage model = ByteArrayToObject <MQMessage>(result.Body);
                        channel.BasicAck(result.DeliveryTag, false);
                        return(model);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return(null);
        }
Ejemplo n.º 3
0
        public static bool Consumer(Func <MQMessage, bool> excuteMessage)
        {
            try
            {
                using (var channel = MQConnection.CreateModel())
                {
                    channel.QueueDeclare(queue: MQQueueName,
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);
                    channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);

                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (ch, ea) =>
                    {
                        var body = ea.Body;
                        // ... process the message
                        MQMessage msg = ByteArrayToObject <MQMessage>(body);
                        if (excuteMessage(msg))
                        {
                            channel.BasicAck(ea.DeliveryTag, false);
                        }
                    };
                    String consumerTag = channel.BasicConsume(MQQueueName, false, consumer);
                    return(true);
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return(false);
        }
Ejemplo n.º 4
0
 private static bool ExcuteMessage(MQMessage msg)
 {
     if (msg != null)
     {
         Console.WriteLine(string.Format("[F1:F2] = [{0}:{1}]", msg.F1, msg.F2));
         return(true);
     }
     return(false);
 }
Ejemplo n.º 5
0
        private static bool PushMQ(int numberMsg)
        {
            int i = 1;

            while (i < numberMsg)
            {
                int count   = 0;
                var message = new MQMessage(i);
                while (!MQUtils.Push(message))
                {
                    Console.WriteLine("{0} Có lỗi khi gửi lên queue. Thử lại lần {1}", i, count++);
                    Thread.Sleep(3000);
                }
                Console.WriteLine(" [x] Sent {0}", i++);
            }
            Console.WriteLine("Push all msg done!");
            return(true);
        }
Ejemplo n.º 6
0
        public static bool Pull(Func <MQMessage, bool> excuteMessage)
        {
            try
            {
                using (var channel = MQConnection.CreateModel())
                {
                    channel.QueueDeclare(queue: MQQueueName,
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);
                    channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);

                    BasicGetResult result = channel.BasicGet(MQQueueName, false);
                    if (result != null)
                    {
                        MQMessage msg = ByteArrayToObject <MQMessage>(result.Body);
                        if (excuteMessage(msg))
                        {
                            // đánh dấu đã đọc msg này
                            channel.BasicAck(result.DeliveryTag, false);
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return(false);
        }
Ejemplo n.º 7
0
        public static bool Pull(IModel channel, Func <MQMessage, bool> excuteMessage)
        {
            BasicGetResult result = channel.BasicGet(MQQueueName, false);

            if (result != null)
            {
                MQMessage msg = ByteArrayToObject <MQMessage>(result.Body);
                if (excuteMessage(msg))
                {
                    // đánh dấu đã đọc msg này
                    channel.BasicAck(result.DeliveryTag, false);
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }