Пример #1
0
        protected void ReceiveMessages(HostItemSubscriber subscriber, IReceiverLink receiverLink)
        {
            subscriber.SetReceiverLink(receiverLink);

            receiverLink.Closed += (sender, error) => { LogItemClosed(error); };

            // Start message pump that will be called when a message
            // is published to the host item.
            receiverLink.Start(subscriber.HostItemAttribute.LinkCredit, (receiver, amqpMessage) =>
            {
                // Deserialize the message body into the the .NET types associated
                // with the handler to which the message should be dispatched.
                Type messageType = subscriber.DispatchInfo.MessageType;
                IMessage message = DeserializeMessage(amqpMessage, messageType);

                SetMessageApplicationProperties(amqpMessage, message);

                // Invoke the handler associated with the message.
                InvokeHandler(receiver, amqpMessage, message, subscriber);
            });
        }