小编Sub*_*a M的帖子

Spring Retry不适用于第二级方法

@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)

java spring

8
推荐指数
1
解决办法
3311
查看次数

Spring Boot:每个日志语句中的LOGBack自定义字段

想要分享以下工作,我努力寻找这个信息:

要求是将业务关联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)

spring logback spring-boot

6
推荐指数
0
解决办法
3074
查看次数

负载均衡器无法与后端连接

我已经在 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 设置的后端连接配置:

在此处输入图片说明

LB 无法与后端建立连接,似乎没有可用的日志信息:

在此处输入图片说明

应用程序工作正常,如果我从计算节点访问:

在此处输入图片说明

oracle-cloud-infrastructure

0
推荐指数
1
解决办法
358
查看次数