避免出错,抽象一个端口确认的方法

This commit is contained in:
三丙
2025-03-26 14:46:11 +08:00
parent f9c44dff25
commit 1d11f0ca2a
3 changed files with 25 additions and 20 deletions

View File

@@ -39,6 +39,10 @@ public abstract class DownlinkCallService {
@Value("${cache.type}")
protected String cacheType;
protected abstract int determinePort(int restPort, int grpcPort);
protected abstract void _sendDownlinkMessage(DownlinkRequestMessage downlinkMessage, String nodeIp, int port);
public void sendDownlinkMessage(DownlinkRequestMessage.Builder downlinkMessageBuilder, String pileCode) {
CacheValueWrapper<PileSession> pileSessionCacheValueWrapper = pileSessionCache.get(new PileSessionCacheKey(pileCode));
@@ -97,10 +101,10 @@ public abstract class DownlinkCallService {
.setResultHandler(result -> log.debug("下行消息发送完成"));
} else {
int port = determinePort(nodeRestPort, nodeGrpcPort);
_sendDownlinkMessage(downlinkMessageBuilder.build(), nodeIp, nodeRestPort, nodeGrpcPort);
_sendDownlinkMessage(downlinkMessageBuilder.build(), nodeIp, port);
}
}
protected abstract void _sendDownlinkMessage(DownlinkRequestMessage downlinkMessage, String nodeIp, int nodeRestPort, int nodeGrpcPort);
}

View File

@@ -30,18 +30,20 @@ public class GrpcDownlinkCallService extends DownlinkCallService {
DownlinkGrpcClient downlinkGrpcClient;
@Override
protected void _sendDownlinkMessage(DownlinkRequestMessage downlinkMessage, String nodeIp, int nodeRestPort, int nodeGrpcPort) {
try {
protected int determinePort(int restPort, int grpcPort) {
return grpcPort;
}
@Override
protected void _sendDownlinkMessage(DownlinkRequestMessage downlinkMessage, String nodeIp, int port) {
try {
RequestMsg requestMsg = RequestMsg.newBuilder()
.setTs(System.currentTimeMillis())
.setTracer(toTracerProto())
.setDownlinkRequestMessage(downlinkMessage)
.build();
downlinkGrpcClient.sendDownlinkRequest(HostAndPort.fromParts(nodeIp, nodeGrpcPort),
requestMsg);
downlinkGrpcClient.sendDownlinkRequest(HostAndPort.fromParts(nodeIp, port), requestMsg);
} catch (Exception e) {
log.error("下行消息发送异常", e);
}

View File

@@ -34,17 +34,21 @@ public class RestDownlinkCallService extends DownlinkCallService {
RestTemplate downlinkRestTemplate;
@Override
protected void _sendDownlinkMessage(DownlinkRequestMessage downlinkMessage, String nodeIp, int nodeRestPort, int nodeGrpcPort) {
protected int determinePort(int restPort, int grpcPort) {
return restPort;
}
@Override
protected void _sendDownlinkMessage(DownlinkRequestMessage downlinkMessage, String nodeIp, int port) {
try {
invokeDownlinkRestApi(downlinkMessage, nodeIp, nodeRestPort);
invokeDownlinkRestApi(downlinkMessage, nodeIp, port);
} catch (RestClientException e) {
log.error("下行消息发送异常", e);
}
}
private void invokeDownlinkRestApi(DownlinkRequestMessage downlinkRequestMessage, String nodeWebapiIpPort, int nodeRestPort) {
private void invokeDownlinkRestApi(DownlinkRequestMessage downlinkRequestMessage, String nodeIp, int port) {
// 调整参数名确保一致性
HttpHeaders headers = new HttpHeaders();
headers.add(JCPP_TRACER_ID, TracerContextUtil.getCurrentTracer().getTraceId());
headers.add(JCPP_TRACER_ORIGIN, TracerContextUtil.getCurrentTracer().getOrigin());
@@ -53,13 +57,8 @@ public class RestDownlinkCallService extends DownlinkCallService {
HttpEntity<DownlinkRequestMessage> entity = new HttpEntity<>(downlinkRequestMessage, headers);
try {
ResponseEntity<?> response = downlinkRestTemplate.postForEntity("http://" + nodeWebapiIpPort + ":" + nodeRestPort + "/api/onDownlink",
entity, ResponseEntity.class);
log.debug("下行消息发送成功 {}", response);
} catch (RestClientException e) {
log.error("下行消息发送失败 {}", downlinkRequestMessage, e);
throw new RuntimeException(e);
}
String url = String.format("http://%s:%d/api/onDownlink", nodeIp, port);
ResponseEntity<?> response = downlinkRestTemplate.postForEntity(url, entity, ResponseEntity.class);
log.debug("下行消息发送成功 {}", response);
}
}