public void BasicEmit <T>(T message, IModel channel, IConnection connection) { var queueName = typeof(T).ToQueue().CreateQueue(channel); var body = message.ToMessage(); var properties = RabbitMqHelper.GetBasicProperties(channel); if (connection.IsOpen) { channel.BasicPublish("", queueName, false, properties, body); } }
public void AdvancedEmit <T>(Dictionary <string, object> args, T message, IModel channel, IConnection connection) { var exchange = args.ConfigureExchange(channel); var routingKey = args.ConfigureRoutingKey(); var body = message.ToMessage(); var properties = RabbitMqHelper.GetBasicProperties(channel); if (connection.IsOpen) { channel.BasicPublish(exchange: exchange, routingKey: routingKey, basicProperties: properties, body: body); } }
public Tuple <string, Func <IModel, EventingBasicConsumer> > BasicConsume <T>(Action <T> action) { var queueName = typeof(T).ToQueue(); Func <IModel, EventingBasicConsumer> consumer = (channel) => { queueName.CreateQueue(channel); var basicConsumer = new EventingBasicConsumer(channel); RabbitMqHelper.InitQos(channel); basicConsumer.Received += (sender, args) => { var body = args.Body.Convert <T>(); action(body); channel.BasicAck(args.DeliveryTag, false); }; return(basicConsumer); }; return(new Tuple <string, Func <IModel, EventingBasicConsumer> >(queueName, consumer)); }
public Tuple <string, Func <IModel, EventingBasicConsumer> > AdvancedConsume <T>(Action <T> action, Dictionary <string, object> args) { var queueName = args.GetAdvancedQueueName(typeof(T)); Func <IModel, EventingBasicConsumer> consumer = (channel) => { queueName.CreateQueue(channel); var exchange = args.ConfigureExchange(channel); var routingKey = args.ConfigureRoutingKey(); RabbitMqHelper.BindQueue(queueName, exchange, routingKey, channel); var basicConsumer = new EventingBasicConsumer(channel); var prefetch = args.GetPrefetch(); RabbitMqHelper.InitQos(channel, prefetch); basicConsumer.Received += (sender, arguments) => { var body = arguments.Body.Convert <T>(); action(body); channel.BasicAck(arguments.DeliveryTag, false); }; return(basicConsumer); }; return(new Tuple <string, Func <IModel, EventingBasicConsumer> >(queueName, consumer)); }