| | |
| | | import com.xcong.excoin.modules.station.model.GateCommand; |
| | | import com.xcong.excoin.modules.station.model.GateStatsEvent; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | import org.springframework.amqp.rabbit.annotation.RabbitListener; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.StringUtils; |
| | |
| | | * JAR 侧 — 消费 Station 下发的启停指令 |
| | | */ |
| | | @Slf4j |
| | | @ConditionalOnProperty(name = "app.gate.enabled", havingValue = "true", matchIfMissing = true) |
| | | @Component |
| | | public class GateCommandConsumer { |
| | | |
| | |
| | | } |
| | | } catch (Exception e) { |
| | | success = false; |
| | | newState = "ERROR"; |
| | | message = e.getMessage(); |
| | | log.error("[Gate] 指令执行失败", e); |
| | | } |
| | | |
| | | // 指令异常/未知类型时 newState 可能为空,统一回退为当前真实状态,避免污染 Station 侧实例状态 |
| | | if (newState == null || newState.isEmpty()) { |
| | | newState = strategy.getState().name(); |
| | | } |
| | | |
| | | // 发送 ACK 到 Station |
| | | CmdAckMsg ack = CmdAckMsg.builder() |
| | | .commandId(cmd.getCommandId()) |