protected void Subscribe() { MessageBus.Subscribe(RoutedEventQueue, (messageBody, messageProperties, receivedInfo) => Task.Factory.StartNew(() => { if (OnRecived == null) { return; } RoutedEventMessage message = Serializer.BytesToMessage <RoutedEventMessage>(messageBody); if (message == null) { throw new Exception("无效的消息"); } var errors = message.Valid(); if (errors.Any()) { throw new Exception(string.Format("无效的消息:{0}", string.Join(";", errors))); } OnRecived(message); }) ); }
protected virtual void SendRoutedEventMessage(RoutedEventBase routedEvent, object sender, RoutedEventArgs args, RaiseScope raiseScope = null) { var message = new RoutedEventMessage(routedEvent, CreateCurrentApplicationSender(sender), args); RoutedEventMessageBus.Send(message, raiseScope); }
protected virtual void OnRecivedRoutedEventMessage(RoutedEventMessage message) { Delegate handlers = null; if (_routedEvents.TryGetValue(message.RoutedEventName, out handlers)) { handlers.DynamicInvoke(message.Sender, message.Args); } }
protected virtual void Publish(RoutedEventMessage message, RaiseScope raiseScope = null) { using (IPublishChannel channel = MessageBus.OpenPublishChannel()) { var messageProperties = new MessageProperties() { DeliveryMode = 2 }; var body = Serializer.MessageToBytes(message); channel.Publish(RoutedEventExchange, GetRoutingKey(raiseScope), messageProperties, body); } }
public void Send(RoutedEventMessage message, RaiseScope raiseScope = null) { Preconditions.CheckNotNull(message, "message"); Publish(message, raiseScope); }