@Retryable似乎没有在第二级方法上工作,sphRemoteCall如下所示.我看到创建了一个代理,但它永远不会在失败时重试.
一旦我转到@Retryable第一级方法 getSubscriberAccount,它就开始工作了.
示例如下:
@Service
public class SphIptvClient extends WebServiceGatewaySupport {
//Works over here
@Retryable(maxAttempts=3, backoff=@Backoff(delay=100))
public GetSubscriberAccountResponse getSubscriberAccount(String loginTocken, String billingServId) {
GetSubscriberAccountResponse response = (GetSubscriberAccountResponse) sphRemoteCall(sphIptvEndPoint, getSubAcc, "xxxxx");
return response;
}
/*
* Retryable is not working on the 2nd level methods in the bean.
* It works only with methods which are called directly from outside
* if there is 2nd level method, like this, Retryable is not working.
*/
//@Retryable …Run Code Online (Sandbox Code Playgroud) 想要分享以下工作,我努力寻找这个信息:
要求是将业务关联ID(AccCode和Mac)放在每个日志语句中.这可以通过使用映射诊断上下文(MDC)来完成..
无需了解LOGBack appender-> Encoder-> Layout如何工作.
Spring启动log4j.properties具有以下模式:
LOG_LEVEL_PATTERN=%5p
LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] boot%X{context} - ${PID} ${LOG_LEVEL_PATTERN} [%t] --- %c{1}: %m%n
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=${LOG_PATTERN}
Run Code Online (Sandbox Code Playgroud)
使用自定义字段从application.properties覆盖LOG_LEVEL_PATTERN:
logging.pattern.level=AccCode:%X{AccCode} Mac:%X{Mac} %5p
Run Code Online (Sandbox Code Playgroud)
请注意,现在我们在布局中定义了两个额外的字段.AccCode和Mac.需要使用MDC提供这些新字段的值:
MDC.put("AccCode", "46014" );
MDC.put("Mac", "2025b9bcf");
Run Code Online (Sandbox Code Playgroud)
然后所有的日志语句都有AccCode和Mac,如下所示:
2016-09-12 09:11:37.574 **AccCode:46014** **Mac:2025b9bcf** DEBUG 9724 --- [main] c.c.p.sph.http.client.SphApAdminClient : Loging out from Sph
Run Code Online (Sandbox Code Playgroud) 我已经在 OCI 计算上部署了 Spring boot 应用程序,并且它的组合很好。计算是使用公共 ip 创建的,并更新了安全列表以允许来自 Internet 的连接。但是,我无法从互联网上到达终点。为此,我想到了配置负载均衡器。
在单独的子网 (10.0.1.0/24)、路由表和安全列表中创建负载均衡器。将 LB 的安全列表配置为将所有协议数据包发送到计算的 CIDR(10.0.0.0/24) 并配置计算的安全列表以接受来自 LB 的数据包。我期待 LB 与后端建立联系。但是,它不是。
我可以从互联网上访问 LB :-
Lb 的路由表,其中包含通过 Internet 网关路由的所有 ip。没有为计算的 CIDR 定义路由,因为它在 VCN 中。
LB 有自己的安全列表,它允许输出数据包计算和从互联网传入,如下所示:
如果我在这里遗漏了什么,请告诉我。
我从 LB 设置的后端连接配置:
LB 无法与后端建立连接,似乎没有可用的日志信息:
应用程序工作正常,如果我从计算节点访问: