Esempio n. 1
0
        // 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);
            });
        }
Esempio n. 2
0
 protected override void ConsumeMessageQueue(IBus bus, IQueue queue, MessageQueueSubscriber subscriber)
 {
     Subscribers.Add(subscriber);
 }