/// <summary> /// 批量保存领域命令 /// </summary> /// <param name="command">命令列表</param> /// <returns></returns> public void Save(IOperateCommand command) { if (command == null) { return; } if (this.CommandFilter(command, CommandBehaviorStorager.Default)) { this.Send(command); } }
/// <summary> /// /// </summary> /// <param name="operaCommand"></param> /// <param name="jsonSerializer"></param> /// <returns></returns> public static CommandStreamMessage ConvertTo(IOperateCommand operaCommand, Serialization.IJsonSerializer jsonSerializer) { var type = operaCommand.Command.GetType(); var message = new CommandStreamMessage() { AppDomain = operaCommand.AppDomain, CreateDate = operaCommand.CreateDate, Creator = operaCommand.Creator, CommandContent = jsonSerializer.SerializeObject(operaCommand.Command), CommandName = type.Name, CommandType = Regex.Replace(type.AssemblyQualifiedName, "version=(.*?),", "", RegexOptions.IgnoreCase), HashCode = operaCommand.HashCode, Increment = operaCommand.Increment, AggregateId = operaCommand.AggregateId, AggregateIdType = Regex.Replace(operaCommand.AggregateIdType.AssemblyQualifiedName, "version=(.*?),", "", RegexOptions.IgnoreCase), Version = operaCommand.Version, }; return(message); }
/// <summary> /// 发送一个命令,该命令会被包装为<see cref="CommandStreamMessage"/> 并发送到指定队列中 /// </summary> /// <param name="e">The e.</param> protected virtual void Send(IOperateCommand e) { if (this.messageProducer == null) { return; } this.Startup(); var message = e.ConvertTo(this.jsonSerializer); try { this.messageProducer.Send(new MessagePacket() { ContentType = MessagePacket.GetContentType(message), Body = this.jsonSerializer.Serialize(message), }, null); } catch (Exception ex) { this.HandlerException(ex); } }
/// <summary> /// 命令过滤器,如果为true,则发送命令,否则不发送 /// </summary> /// <param name="e">The e.</param> /// <param name="commandBehaviorStorage">The Command behavior storage.</param> /// <returns></returns> protected virtual bool CommandFilter(IOperateCommand e, CommandBehaviorStorager commandBehaviorStorage) { return(true); }
/// <summary> /// /// </summary> /// <param name="operaCommand"></param> /// <param name="jsonSerializer"></param> /// <returns></returns> public static CommandStreamMessage ConvertTo(this IOperateCommand operaCommand, Serialization.IJsonSerializer jsonSerializer) { return(CommandStreamHelper.ConvertTo(operaCommand, jsonSerializer)); }
/// <summary> /// /// </summary> /// <param name="operaCommand"></param> /// <returns></returns> public static CommandStreamMessage ConvertTo(this IOperateCommand operaCommand) { return(CommandStreamHelper.ConvertTo(operaCommand)); }
/// <summary> /// 批量保存领域命令 /// </summary> /// <param name="command">命令列表</param> /// <returns></returns> public void Save(IOperateCommand command) { }
/// <summary> /// /// </summary> /// <param name="operaCommand"></param> /// <returns></returns> public static CommandStreamMessage ConvertTo(IOperateCommand operaCommand) { return(ConvertTo(operaCommand, Never.Serialization.SerializeEnvironment.JsonSerializer)); }