shikeyin
2024-01-11 65da8373531677b1c37a98f53eaa30c892f35e5a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package com.iplatform.tcp.lb;
 
import com.walker.tcp.lb.LongConnectionMeta;
 
/**
 * 平台实现的长连接元数据对象。
 * <pre>
 *     1) 该对象表示一个物理连接的映射,会缓存到Redis中。
 *     2) 本机节点只能获取自己的链路连接,并通过连接直接发送消息。
 *     3) 连接元数据作用是,在其他节点中通过Redis中记录的连接映射以MQ消息形式发送出去。
 * </pre>
 * @author 时克英
 * @date 2023-09-26
 */
public class MqConnectionMeta extends LongConnectionMeta {
 
//    private final transient SendStatusCallback callback = new SendStatusCallback();
 
    public MqConnectionMeta(){}
 
    public MqConnectionMeta(String id) {
        super(id);
    }
 
//    @JsonIgnore
//    @Override
//    public void write(Response<?> response) {
//        // 通过MQ发送消息到目标主机,该目标就是当前连接绑定的主机标识。
//        // 暂时使用异步任务发送,2023-09-26
//        // 这里发送的主题就是全局连接对应的主机信息:
////        BeanContextAware.getBeanByType(RocketMQEnhanceTemplate.class)
////                .sendAsync(response.getTopic(), this.acquireMqResponse(response), callback);
//        logger.info("+++++++++++++++++++++++++");
//        BeanContextAware.getBeanByType(RocketMQEnhanceTemplate.class)
//                .sendAsync(this.getConnectionHost(), this.acquireMqResponse(response), callback);
//        if(this.logger.isDebugEnabled()){
//            logger.debug("MqConnectionMeta 发送一个消息:{}", response);
//        }
//    }
 
//    @Override
//    protected void onWrite(Response<?> response){
//        logger.info("+++++++++++++++++++++++++");
//        BeanContextAware.getBeanByType(RocketMQEnhanceTemplate.class)
//                .sendAsync(this.getConnectionHost(), this.acquireMqResponse(response), callback);
//        if(this.logger.isDebugEnabled()){
//            logger.debug("MqConnectionMeta 发送一个消息:{}", response);
//        }
//    }
 
//    private MqResponse acquireMqResponse(Response<?> response){
//        MqResponse data = new MqResponse();
//        data.setResponse(response);
//        data.setKey(IdUtils.fastSimpleUUID());
//        data.setRetryTimes(1);
//        data.setSource(response.getProtocolNum());
//        data.setSendTime(DateUtils.getDateTimeNumber());
//        data.setTopic(response.getTopic());
//        return data;
//    }
 
    @Override
    public void disconnect() {
        // nothing;
    }
 
    @Override
    public boolean isConnected() {
        return true;
    }
 
    @Override
    public String toString(){
        return new StringBuilder("MqConnectionMeta{id=").append(this.getId())
                .append(", alreadyLogin=").append(this.getAlreadyLogin())
                .append(", host=").append(this.getConnectionHost())
                .append(", name=").append(this.getName())
                .append(", lastTime=").append(this.getLastTime())
                .append("}").toString();
    }
}