public void Subscribe(IConnection connection, IRabbitMQBodySerializer serializer, CancellationToken stoppingToken) { if (connection == null) { throw new ArgumentNullException(); } if (serializer == null) { throw new ArgumentNullException(); } this.bodySerializer = serializer; Task.Run(async() => { await createChannel(connection, stoppingToken); stoppingToken.Register(shutdownProcedure); var queueName = channel.QueueDeclare(QueueName, Durable, Exclusive, AutoDelete); var messageConsumer = new EventingBasicConsumer(channel); messageConsumer.Received += handleReceivedMessage; channel.BasicConsume( queue: queueName, autoAck: AutoAck, consumer: messageConsumer ); channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false); if (Exchange.Equals("") || RoutingKey.Equals("")) { return; } channel.QueueBind( queue: queueName, routingKey: RoutingKey, exchange: Exchange, arguments: null ); }); }
public void ExecuteCallback(IRabbitMQBodySerializer serializer, byte[] body) { var obj = serializer.GetObject <T>(body); ResponseCallback?.Invoke(obj); }