package com.iplatform.tcp.lb; import com.walker.tcp.lb.LongConnectionMeta; /** * 平台实现的长连接元数据对象。 *
 *     1) 该对象表示一个物理连接的映射,会缓存到Redis中。
 *     2) 本机节点只能获取自己的链路连接,并通过连接直接发送消息。
 *     3) 连接元数据作用是,在其他节点中通过Redis中记录的连接映射以MQ消息形式发送出去。
 * 
* @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(); } }