public async Task <bool> PublishAsync <TEntity>(IServiceProvider serviceProvider, IEnumerable <IEntity> entities, PersistentOperator operType, PersistentEventType eventType)
        {
            if (!entities.Any())
            {
                return(true);
            }

            var _event  = new EntitiesArgs(entities, operType, eventType);
            var subject = new PersistentSubject(typeof(TEntity), eventType, _event);

            await subMgr.PublishAsync(subject);

            await AcceptForServiceProviderAsync(serviceProvider, subject);

            return(!_event.Cancel);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 发送消息。
        /// </summary>
        /// <param name="method"></param>
        /// <param name="arguments"></param>
        /// <returns></returns>
        public override async Task SendAsync(string method, params object[] arguments)
        {
            //使用消息队列将消息发指定的服务器,即aliveKey对应的服务器
            var msg = new DistributedInvokeMessage
            {
                AliveKey    = _aliveKey,
                Connections = _connections,
                Message     = new InvokeMessage(method, 0, arguments)
            };

            await _subscribeMgr.PublishAsync(_aliveKey, msg);
        }
Exemplo n.º 3
0
 public async Task WriteAsync(IDbCommand command, TimeSpan period, CancellationToken cancellationToken = default)
 {
     await subMgr.PublishAsync(new CommandLogSubject { Level = 0, CommandText = command.Output(), Period = period.TotalMilliseconds });
 }