diff --git a/jcpp-app/src/main/java/sanbing/jcpp/app/service/DownlinkCallService.java b/jcpp-app/src/main/java/sanbing/jcpp/app/service/DownlinkCallService.java index 692dd70..86a79b7 100644 --- a/jcpp-app/src/main/java/sanbing/jcpp/app/service/DownlinkCallService.java +++ b/jcpp-app/src/main/java/sanbing/jcpp/app/service/DownlinkCallService.java @@ -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 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); } \ No newline at end of file diff --git a/jcpp-app/src/main/java/sanbing/jcpp/app/service/impl/GrpcDownlinkCallService.java b/jcpp-app/src/main/java/sanbing/jcpp/app/service/impl/GrpcDownlinkCallService.java index 7f3ac99..5aea74a 100644 --- a/jcpp-app/src/main/java/sanbing/jcpp/app/service/impl/GrpcDownlinkCallService.java +++ b/jcpp-app/src/main/java/sanbing/jcpp/app/service/impl/GrpcDownlinkCallService.java @@ -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); } diff --git a/jcpp-app/src/main/java/sanbing/jcpp/app/service/impl/RestDownlinkCallService.java b/jcpp-app/src/main/java/sanbing/jcpp/app/service/impl/RestDownlinkCallService.java index 6a429df..9df7b3d 100644 --- a/jcpp-app/src/main/java/sanbing/jcpp/app/service/impl/RestDownlinkCallService.java +++ b/jcpp-app/src/main/java/sanbing/jcpp/app/service/impl/RestDownlinkCallService.java @@ -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 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); } } \ No newline at end of file