/// <summary> /// 发布事件调用失败的结果 /// </summary> internal static void PublishRaiseFailed(dynamic identity, EventKey key, string message) { var en = EventUtil.GetRaiseResult(key.EventName, key.EventId);//消息队列的事件名称 var arg = CreatePublishRaiseResultArg(identity, key, false, message, string.Empty); EventPortal.Publish(en, arg); }
public static void NotifyDeleted(RemoteType remoteType, object id) { var arg = CreateEventArg(remoteType, id); var eventName = RemoteObjectDeleted.GetEventName(remoteType); EventPortal.Publish(eventName, arg); }
/// <summary> /// 发布事件调用成功的结果 /// </summary> /// <param name="eventName"></param> /// <param name="eventId"></param> /// <param name="message"></param> internal static void PublishRaiseSucceeded(dynamic identity, string eventName, Guid eventId, string argsCode) { var en = EventUtil.GetRaiseResult(eventName, eventId); //消息队列的事件名称 //返回事件成功被执行的结果 var arg = CreatePublishRaiseResultArg(identity, new EventKey(eventId, eventName), true, string.Empty, argsCode); EventPortal.Publish(en, arg); }
private static void ReverseRemoteEvent(EventEntry entry, dynamic identity, DTObject args) { entry.Status = EventStatus.Reversing; //调用远程事件时会创建一个接收结果的临时队列,有可能该临时队列没有被删除,所以需要在回逆的时候处理一次 EventTrigger.CleanupRemoteEventResult(entry.EventName, entry.EventId); //发布“回逆事件”的事件 var reverseEventName = EventUtil.GetReverse(entry.EventName); EventPortal.Publish(reverseEventName, entry.GetRemotable(identity, args)); //注意,与“触发事件”不同,我们不需要等待回逆的结果,只用传递回逆的消息即可 entry.Status = EventStatus.Reversed; }
private static void RaiseRemoteEvent(EventEntry entry, dynamic identity, DTObject args) { entry.Status = EventStatus.Raising; //先订阅触发事件的返回结果的事件 SubscribeRemoteEventResult(entry.EventName, entry.EventId); //再发布“触发事件”的事件 var raiseEventName = EventUtil.GetRaise(entry.EventName); EventPortal.Publish(raiseEventName, entry.GetRemotable(identity, args)); //触发远程事件就是发布一个“触发事件”的事件 ,订阅者会收到消息后会执行触发操作 TimeoutManager.Start(new EventKey(entry.EventId, entry.EventName)); }