示例#1
0
        private void OnMessageReceived(object sender, BrokeredMessageEventArgs args)
        {
            // NOTE: type information does not belong here. It's a responsibility
            // of the serializer to be self-contained and put any information it
            // might need for rehytration.
            var message = args.Message;

            using (var stream = message.GetBody <Stream>())
            {
                var payload = this.serializer.Deserialize(stream);
                // TODO: error handling if handlers fail?
                try
                {
                    ProcessMessage(payload);
                    // TODO: exception between these two?
                    message.Async(message.BeginComplete, message.EndComplete);
                }
                catch (Exception)
                {
                    // TODO: retries, retry count, Abandon vs DeadLetter?
                    // Just: if (args.Message.DeliveryCount > 5) ?
                    args.Message.Async(args.Message.BeginDeadLetter, args.Message.EndDeadLetter);
                }
            }
        }
示例#2
0
        /// <summary>
        /// This event will be called each time a message arrives.
        /// </summary>
        /// <param name="message"></param>
        public void Handle(BrokeredMessageEventArgs message)
        {
            TraceManager.TraceInfo("Travel Handler Module.OnMessage");

            foreach (var item in _messageHandlers)
            {
                if (item.CanExecute(message.BrokeredMessage))
                {
                    item.Handle(message.BrokeredMessage);
                }
            }
        }
示例#3
0
 public void Handle(BrokeredMessageEventArgs e)
 {
 }