/// <inheritdoc /> public virtual IDisposable Consume( IQueue queue, MessageHandler onMessage, Action <IConsumerConfiguration> configure ) { Preconditions.CheckNotNull(queue, "queue"); Preconditions.CheckNotNull(onMessage, "onMessage"); Preconditions.CheckNotNull(configure, "configure"); if (disposed) { throw new EasyNetQException("This bus has been disposed"); } var consumerConfiguration = new ConsumerConfiguration(configuration.PrefetchCount); configure(consumerConfiguration); var consumer = consumerFactory.CreateConsumer(queue, (body, properties, receivedInfo, cancellationToken) => { var rawMessage = produceConsumeInterceptor.OnConsume(new ConsumedMessage(receivedInfo, properties, body)); return(onMessage(rawMessage.Body, rawMessage.Properties, receivedInfo, cancellationToken)); }, consumerConfiguration); consumer.StartConsuming(); return(consumer); }
/// <inheritdoc /> public async Task <PullResult> PullAsync(CancellationToken cancellationToken = default) { using var cts = cancellationToken.WithTimeout(options.Timeout); var basicGetResult = await channel.InvokeChannelActionAsync( x => x.BasicGet(queue.Name, options.AutoAck), cts.Token ).ConfigureAwait(false); if (basicGetResult == null) { return(PullResult.NotAvailable); } var messagesCount = basicGetResult.MessageCount; var message = new ConsumedMessage( new MessageReceivedInfo( "", basicGetResult.DeliveryTag, basicGetResult.Redelivered, basicGetResult.Exchange, basicGetResult.RoutingKey, queue.Name ), new MessageProperties(basicGetResult.BasicProperties), basicGetResult.Body.ToArray() ); var interceptedMessage = interceptor.OnConsume(message); return(PullResult.Available( messagesCount, interceptedMessage.ReceivedInfo, interceptedMessage.Properties, interceptedMessage.Body )); }
public virtual IDisposable Consume(IQueue queue, Func <byte[], MessageProperties, MessageReceivedInfo, Task> onMessage, Action <IConsumerConfiguration> configure) { Preconditions.CheckNotNull(queue, "queue"); Preconditions.CheckNotNull(onMessage, "onMessage"); Preconditions.CheckNotNull(configure, "configure"); if (disposed) { throw new MessageBusException("This bus has been disposed"); } var consumerConfiguration = new ConsumerConfiguration(connectionConfiguration.PrefetchCount); configure(consumerConfiguration); var consumer = consumerFactory.CreateConsumer(queue, (body, properties, receivedInfo) => { var rawMessage = produceConsumeInterceptor.OnConsume(new RawMessage(properties, body)); return(onMessage(rawMessage.Body, rawMessage.Properties, receivedInfo)); }, connection, consumerConfiguration); return(consumer.StartConsuming()); }