当 AWS X-ray 守护程序未运行时,Springboot 应用程序会抛出异常

问题描述 投票:0回答:1

我正在研究 springboot 和 AWS X-Ray 集成,作为此工作的一部分,我们推送了代码并部署了 springboot 应用程序和 x-ray 守护进程作为生产环境中 ESC Fargate 任务中的边车容器,一切正常,但我们不需要对 QA 和 STAGE 等较低环境的任何 X 射线支持,因此我们不会部署 X 射线守护进程;因为现有代码无法连接到 X 射线守护程序并抛出以下异常。

04:54:12.364 [pool-2-thread-1] ERROR com.amazonaws.xray.strategy.sampling.pollers.RulePoller -Encountered error polling GetSamplingRules: 
com.amazonaws.xray.internal.XrayClientException: Could not serialize and send request.
    at com.amazonaws.xray.internal.UnsignedXrayClient.sendRequest(UnsignedXrayClient.java:142) ~[core-commons-qa2-1.0.0.jar!/:?]
    at com.amazonaws.xray.internal.UnsignedXrayClient.getSamplingRules(UnsignedXrayClient.java:112) ~[core-commons-qa2-1.0.0.jar!/:?]
    at com.amazonaws.xray.strategy.sampling.pollers.RulePoller.pollRule(RulePoller.java:100) ~[core-commons-qa2-1.0.0.jar!/:?]
    at com.amazonaws.xray.strategy.sampling.pollers.RulePoller.lambda$start$0(RulePoller.java:72) ~[core-commons-qa2-1.0.0.jar!/:?]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
    at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:?]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) ~[?:?]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) ~[?:?]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) ~[?:?]
    at java.net.Socket.connect(Socket.java:609) ~[?:?]

我们如何处理这种可以在较低环境下成功运行相同代码库而不删除 X-Ray SDK 代码的情况?是否存在仅在 X 射线守护进程运行时进行检查和检测的配置?请在这里透露一些信息。

amazon-web-services spring-boot amazon-ecs aws-fargate aws-xray
1个回答
0
投票

您可以使用 spring profiling 来针对不同环境启用/禁用 xray:

  • 扩展 BaseAbstractXRayInterceptor 并覆盖 xrayEnabledClasses。
  • 现在注入扩展的 BaseAbstractXRayInterceptor 类并使用预期的配置文件注释您的注入。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.