public override void Go(BasicDeliverEventArgs ea)
        {
            switch (ea.RoutingKey)
            {
            // 上报的算力放在这里消费,因为只有WebApiServer消费该类型的消息,WsServer不消费该类型的消息
            case MqKeyword.SpeedRoutingKey: {
                Guid     clientId  = MinerClientMqBodyUtil.GetClientIdMqReciveBody(ea.Body);
                DateTime timestamp = Timestamp.FromTimestamp(ea.BasicProperties.Timestamp.UnixTime);
                string   appId     = ea.BasicProperties.AppId;
                string   minerIp   = ea.BasicProperties.ReadHeaderString(MqKeyword.MinerIpHeaderName);
                VirtualRoot.RaiseEvent(new SpeedDataMqMessage(appId, clientId, minerIp, timestamp));
            }
            break;

            case MqKeyword.MinerClientWsOpenedRoutingKey: {
                DateTime timestamp = Timestamp.FromTimestamp(ea.BasicProperties.Timestamp.UnixTime);
                string   appId     = ea.BasicProperties.AppId;
                Guid     clientId  = MinerClientMqBodyUtil.GetClientIdMqReciveBody(ea.Body);
                if (clientId != Guid.Empty)
                {
                    VirtualRoot.RaiseEvent(new MinerClientWsOpenedMqMessage(appId, clientId, timestamp));
                }
            }
            break;

            case MqKeyword.MinerClientWsClosedRoutingKey: {
                DateTime timestamp = Timestamp.FromTimestamp(ea.BasicProperties.Timestamp.UnixTime);
                string   appId     = ea.BasicProperties.AppId;
                Guid     clientId  = MinerClientMqBodyUtil.GetClientIdMqReciveBody(ea.Body);
                if (clientId != Guid.Empty)
                {
                    VirtualRoot.RaiseEvent(new MinerClientWsClosedMqMessage(appId, clientId, timestamp));
                }
            }
            break;

            case MqKeyword.MinerClientWsBreathedRoutingKey: {
                DateTime timestamp = Timestamp.FromTimestamp(ea.BasicProperties.Timestamp.UnixTime);
                string   appId     = ea.BasicProperties.AppId;
                Guid     clientId  = MinerClientMqBodyUtil.GetClientIdMqReciveBody(ea.Body);
                if (clientId != Guid.Empty)
                {
                    VirtualRoot.RaiseEvent(new MinerClientWsBreathedMqMessage(appId, clientId, timestamp));
                }
            }
            break;

            case MqKeyword.ChangeMinerSignRoutingKey: {
                MinerSign minerSign = MinerClientMqBodyUtil.GetChangeMinerSignMqReceiveBody(ea.Body);
                if (minerSign != null)
                {
                    VirtualRoot.Execute(new ChangeMinerSignMqMessage(minerSign));
                }
            }
            break;

            default:
                break;
            }
        }
Exemplo n.º 2
0
        public override bool Go(BasicDeliverEventArgs ea)
        {
            switch (ea.RoutingKey)
            {
            // 上报的算力放在这里消费,因为只有WebApiServer消费该类型的消息,WsServer不消费该类型的消息
            case MqKeyword.SpeedRoutingKey: {
                Guid     clientId  = MinerClientMqBodyUtil.GetClientIdMqReciveBody(ea.Body);
                DateTime timestamp = Timestamp.FromTimestamp(ea.BasicProperties.Timestamp.UnixTime);
                string   appId     = ea.BasicProperties.AppId;
                string   minerIp   = ea.BasicProperties.ReadHeaderString(MqKeyword.MinerIpHeaderName);
                VirtualRoot.RaiseEvent(new SpeedDataMqEvent(appId, clientId, minerIp, timestamp));
            }
            break;

            case MqKeyword.ChangeMinerSignRoutingKey: {
                string    appId     = ea.BasicProperties.AppId;
                MinerSign minerSign = MinerClientMqBodyUtil.GetChangeMinerSignMqReceiveBody(ea.Body);
                if (minerSign != null)
                {
                    VirtualRoot.Execute(new ChangeMinerSignMqCommand(appId, minerSign));
                }
            }
            break;

            case MqKeyword.QueryClientsForWsRoutingKey: {
                DateTime timestamp             = Timestamp.FromTimestamp(ea.BasicProperties.Timestamp.UnixTime);
                string   appId                 = ea.BasicProperties.AppId;
                string   mqMessageId           = ea.BasicProperties.MessageId;
                string   loginName             = ea.BasicProperties.ReadHeaderString(MqKeyword.LoginNameHeaderName);
                string   sessionId             = ea.BasicProperties.ReadHeaderString(MqKeyword.SessionIdHeaderName);
                QueryClientsForWsRequest query = MinerClientMqBodyUtil.GetQueryClientsForWsMqReceiveBody(ea.Body);
                if (query != null)
                {
                    VirtualRoot.Execute(new QueryClientsForWsMqCommand(appId, mqMessageId, timestamp, loginName, sessionId, query));
                }
            }
            break;

            default:
                return(false);
            }
            return(true);
        }