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); } }
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); }
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); }
public static bool QueueEmpty() { using (var channel = MQConnection.CreateModel()) { var count = channel.MessageCount(MQQueueName); if (count == 0) { return(true); } } return(false); }
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); }