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); } } }
/// <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); } } }
public void Handle(BrokeredMessageEventArgs e) { }