// Defines a callback function to be called when a message arrives on the queue. protected virtual void ConsumeMessageQueue(IBus bus, IQueue queue, MessageQueueSubscriber subscriber) { QueueMeta definition = subscriber.QueueMeta; bus.Advanced.Consume(queue, (bytes, msgProps, receiveInfo) => { var consumerContext = new ConsumeContext { Logger = Context.LoggerFactory.CreateLogger(definition.QueueFactory.GetType().FullName), MessageData = bytes, MessageProps = msgProps, MessageReceiveInfo = receiveInfo, Subscriber = subscriber, BusModule = BusModule, MessagingModule = MessagingModule, Serialization = _serializationManager, GetRpcMessageHandler = GetRpcMessageHandler }; // Delegate to the queue factory, associated with the definition, and // allow it to determine how the received message should be processed. return(definition.QueueFactory.OnMessageReceivedAsync(consumerContext)); }, config => { if (definition.PrefetchCount > 0) { config.WithPrefetchCount(definition.PrefetchCount); } if (definition.IsExclusive) { config.AsExclusive(); } config.WithPriority(definition.Priority); }); }
protected override void ConsumeMessageQueue(IBus bus, IQueue queue, MessageQueueSubscriber subscriber) { Subscribers.Add(subscriber); }