public MinerSignSet(IReadOnlyMinerRedis redis) { redis.GetAllAsync().ContinueWith(t => { _initedOn = DateTime.Now; foreach (var item in t.Result) { Add(MinerSign.Create(item)); } IsReadied = true; NTMinerConsole.UserOk("矿机签名集就绪"); VirtualRoot.RaiseEvent(new MinerSignSetInitedEvent()); }); // 收到Mq消息之前一定已经初始化完成,因为Mq消费者在MinerSignSetInitedEvent事件之后才会创建 VirtualRoot.BuildEventPath <MinerDataRemovedMqMessage>("收到MinerClientRemovedMq消息后移除内存中对应的记录", LogEnum.None, path: message => { #region if (message.AppId == ServerRoot.HostConfig.ThisServerAddress) { return; } if (string.IsNullOrEmpty(message.MinerId)) { return; } if (IsOldMqMessage(message.Timestamp)) { NTMinerConsole.UserOk(nameof(MinerDataRemovedMqMessage) + ":" + MqKeyword.SafeIgnoreMessage); return; } if (_dicByMinerId.TryGetValue(message.MinerId, out MinerSign minerSign)) { if (AppRoot.MinerClientSessionSet.TryGetByClientId(minerSign.ClientId, out IMinerClientSession ntminerSession)) { ntminerSession.CloseAsync(WsCloseCode.Normal, "服务端移除了该矿机"); } _dicByMinerId.Remove(message.MinerId); _dicByClientId.Remove(minerSign.ClientId); } #endregion }, this.GetType()); VirtualRoot.BuildEventPath <MinerDataAddedMqMessage>("收到MinerDataAddedMq消息后更新内存中对应的记录", LogEnum.None, path: message => { #region if (message.AppId == ServerRoot.HostConfig.ThisServerAddress) { return; } if (string.IsNullOrEmpty(message.MinerId)) { return; } if (IsOldMqMessage(message.Timestamp)) { NTMinerConsole.UserOk(nameof(MinerDataAddedMqMessage) + ":" + MqKeyword.SafeIgnoreMessage); return; } redis.GetByIdAsync(message.MinerId).ContinueWith(t => { if (t.Result != null) { if (_dicByMinerId.TryGetValue(message.MinerId, out MinerSign minerSign)) { minerSign.Update(t.Result); } else { Add(MinerSign.Create(t.Result)); } } }); #endregion }, this.GetType()); VirtualRoot.BuildEventPath <MinerSignChangedMqMessage>("收到MinerSignChangedMq消息后更新内存中对应的记录", LogEnum.None, path: message => { #region if (message.AppId == ServerRoot.HostConfig.ThisServerAddress) { return; } if (string.IsNullOrEmpty(message.MinerId)) { return; } if (IsOldMqMessage(message.Timestamp)) { NTMinerConsole.UserOk(nameof(MinerSignChangedMqMessage) + ":" + MqKeyword.SafeIgnoreMessage); return; } redis.GetByIdAsync(message.MinerId).ContinueWith(t => { if (t.Result != null) { if (_dicByMinerId.TryGetValue(message.MinerId, out MinerSign minerSign)) { minerSign.Update(t.Result); } else { Add(MinerSign.Create(t.Result)); } } }); #endregion }, this.GetType()); }
public MinerSignSet(IReadOnlyMinerRedis redis) { redis.GetAllAsync().ContinueWith(t => { _initedOn = DateTime.Now; foreach (var item in t.Result) { Add(MinerSign.Create(item)); } IsReadied = true; Write.UserOk("矿机签名集就绪"); VirtualRoot.RaiseEvent(new MinerSignSetInitedEvent()); }); // 收到Mq消息之前一定已经初始化完成,因为Mq消费者在MinerSignSetInitedEvent事件之后才会创建 VirtualRoot.AddEventPath <MinerDataRemovedMqMessage>("收到MinerClientRemovedMq消息后移除内存中对应的记录", LogEnum.None, action: message => { if (message.AppId == ServerRoot.HostConfig.ThisServerAddress) { return; } if (string.IsNullOrEmpty(message.MinerId)) { return; } if (IsOldMqMessage(message.Timestamp)) { Write.UserOk(_safeIgnoreMessage); return; } if (_dicByMinerId.TryGetValue(message.MinerId, out MinerSign minerSign)) { _dicByMinerId.Remove(message.MinerId); _dicByClientId.Remove(minerSign.ClientId); } }, this.GetType()); VirtualRoot.AddEventPath <MinerDataAddedMqMessage>("收到MinerDataAddedMq消息后更新内存中对应的记录", LogEnum.None, action: message => { if (message.AppId == ServerRoot.HostConfig.ThisServerAddress) { return; } if (string.IsNullOrEmpty(message.MinerId)) { return; } if (IsOldMqMessage(message.Timestamp)) { Write.UserOk(_safeIgnoreMessage); return; } redis.GetByIdAsync(message.MinerId).ContinueWith(t => { if (t.Result != null) { if (_dicByMinerId.TryGetValue(message.MinerId, out MinerSign minerSign)) { minerSign.Update(t.Result); } else { Add(MinerSign.Create(t.Result)); } } }); }, this.GetType()); VirtualRoot.AddEventPath <MinerSignChangedMqMessage>("收到MinerSignChangedMq消息后更新内存中对应的记录", LogEnum.None, action: message => { if (message.AppId == ServerRoot.HostConfig.ThisServerAddress) { return; } if (string.IsNullOrEmpty(message.MinerId)) { return; } if (IsOldMqMessage(message.Timestamp)) { Write.UserOk(_safeIgnoreMessage); return; } redis.GetByIdAsync(message.MinerId).ContinueWith(t => { if (t.Result != null) { if (_dicByMinerId.TryGetValue(message.MinerId, out MinerSign minerSign)) { minerSign.Update(t.Result); } else { Add(MinerSign.Create(t.Result)); } } }); }, this.GetType()); }