Administrator
2026-08-13 8eceb0c041b6fcb0c375cfe7470d8d02eb0bea46
src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
@@ -72,6 +72,18 @@
    // 平仓路由
    public static final String ROUTINGKEY_CLOSETRADE = "ROUTINGKEY_CLOSETRADE";
    // ==================== Gate 策略管理 ====================
    /** Gate 管理交换机 */
    public static final String EXCHANGE_GATE = "biue-exchange-gate";
    /** 心跳+事件+确认 队列(Station 独占消费) */
    public static final String QUEUE_GATE_HEARTBEAT = "QUEUE_GATE_HEARTBEAT";
    /** 心跳+事件+确认 路由键 */
    public static final String ROUTINGKEY_GATE_HEARTBEAT = "ROUTINGKEY_GATE_HEARTBEAT";
    /** 策略事件队列(Station 消费落库) */
    public static final String QUEUE_GATE_STATS = "QUEUE_GATE_STATS";
    /** 策略事件路由键 */
    public static final String ROUTINGKEY_GATE_STATS = "ROUTINGKEY_GATE_STATS";
    @Resource
    private ConnectionFactory connectionFactory;
@@ -286,4 +298,31 @@
        return BindingBuilder.bind(queueCloseTrade()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_CLOSETRADE);
    }
    // ==================== Gate 管理队列 ====================
    @Bean
    public DirectExchange gateExchange() {
        return new DirectExchange(EXCHANGE_GATE);
    }
    @Bean
    public Queue gateHeartbeatQueue() {
        return new Queue(QUEUE_GATE_HEARTBEAT, true);
    }
    @Bean
    public Binding bindingGateHeartbeat() {
        return BindingBuilder.bind(gateHeartbeatQueue()).to(gateExchange()).with(ROUTINGKEY_GATE_HEARTBEAT);
    }
    @Bean
    public Queue gateStatsQueue() {
        return new Queue(QUEUE_GATE_STATS, true);
    }
    @Bean
    public Binding bindingGateStats() {
        return BindingBuilder.bind(gateStatsQueue()).to(gateExchange()).with(ROUTINGKEY_GATE_STATS);
    }
}