Skip to content

Commit

Permalink
[SELC-4891] feat: Add Retry Mechanism to REST GET Calls using resilie…
Browse files Browse the repository at this point in the history
…nce4j-spring-boot2 (#445)
  • Loading branch information
manuraf committed May 16, 2024
1 parent 044e87d commit 461b99c
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 1 deletion.
12 changes: 11 additions & 1 deletion app/src/main/resources/config/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,14 @@ logging:

dashboard:
security:
connector: ${B4F_DASHBOARD_SECURITY_CONNECTOR:v2}
connector: ${B4F_DASHBOARD_SECURITY_CONNECTOR:v2}

resilience4j:
retry:
retry-aspect-order: 1
instances:
retryTimeout:
max-attempts: 3
wait-duration: 5s
retry-exceptions:
- feign.RetryableException
5 changes: 5 additions & 0 deletions connector/rest/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
</dependency>

<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot2</artifactId>
</dependency>
</dependencies>


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package it.pagopa.selfcare.dashboard.connector.rest;

import io.github.resilience4j.retry.annotation.Retry;
import it.pagopa.selfcare.commons.base.security.PartyRole;
import it.pagopa.selfcare.core.generated.openapi.v1.dto.*;
import it.pagopa.selfcare.dashboard.connector.api.MsCoreConnector;
Expand Down Expand Up @@ -57,6 +58,7 @@ class CoreConnectorImpl implements MsCoreConnector {
static final String REQUIRED_GEOGRAPHIC_TAXONOMIES_MESSAGE = "An object of geographic taxonomy list is required";

@Override
@Retry(name = "retryTimeout")
public Institution getInstitution(String institutionId) {
log.trace("getInstitution start");
log.debug("getInstitution institutionId = {}", institutionId);
Expand Down Expand Up @@ -94,6 +96,7 @@ public DelegationId createDelegation(DelegationRequest delegation) {
}

@Override
@Retry(name = "retryTimeout")
public List<BrokerInfo> findInstitutionsByProductAndType(String productId, String type) {
log.trace("findInstitutionsByProductAndType start");
log.debug("findInstitutionsByProductAndType productId = {}, type = {}", productId, type);
Expand All @@ -107,6 +110,7 @@ public List<BrokerInfo> findInstitutionsByProductAndType(String productId, Strin
}

@Override
@Retry(name = "retryTimeout")
public List<Delegation> getDelegations(GetDelegationParameters delegationParameters) {
log.trace("getDelegations start");
log.debug("getDelegations productId = {}, type = {}", delegationParameters.getFrom(), delegationParameters.getProductId());
Expand Down Expand Up @@ -146,6 +150,7 @@ public void updateInstitutionGeographicTaxonomy(String institutionId, Geographic
}

@Override
@Retry(name = "retryTimeout")
public List<GeographicTaxonomy> getGeographicTaxonomyList(String institutionId) {
log.trace("getGeographicTaxonomyList start");
log.debug("getGeographicTaxonomyList institutionId = {}", institutionId);
Expand All @@ -165,6 +170,7 @@ public List<GeographicTaxonomy> getGeographicTaxonomyList(String institutionId)
}

@Override
@Retry(name = "retryTimeout")
public List<PartyProduct> getInstitutionProducts(String institutionId) {
log.trace("getInstitutionProducts start");
log.debug("getInstitutionProducts institutionId = {}", institutionId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package it.pagopa.selfcare.dashboard.connector.rest;

import io.github.resilience4j.retry.annotation.Retry;
import it.pagopa.selfcare.backoffice.generated.openapi.v1.dto.Brokers;
import it.pagopa.selfcare.backoffice.generated.openapi.v1.dto.BrokersPsp;
import it.pagopa.selfcare.dashboard.connector.api.PagoPABackOfficeConnector;
Expand Down Expand Up @@ -33,6 +34,7 @@ public PagoPABackOfficeConnectorImpl(MsBackOfficeStationApiClient backofficeStat
}

@Override
@Retry(name = "retryTimeout")
public List<BrokerInfo> getBrokersEC(int page, int limit) {
log.trace("getBrokersEC start");
ResponseEntity<Brokers> responseBrokersEC = backofficeStationApiClient._getBrokers(page, null, limit, null, null, null, DEFAULT_ORDER_DIRECTION);
Expand All @@ -43,6 +45,7 @@ public List<BrokerInfo> getBrokersEC(int page, int limit) {
}

@Override
@Retry(name = "retryTimeout")
public List<BrokerInfo> getBrokersPSP(int page, int limit) {
log.trace("getBrokersPSP start");
ResponseEntity<BrokersPsp> responseBrokersPSP = backofficeChannelApiClient._getBrokersPsp(page, null, limit, null, null, null, DEFAULT_ORDER_DIRECTION);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package it.pagopa.selfcare.dashboard.connector.rest;

import io.github.resilience4j.retry.annotation.Retry;
import it.pagopa.selfcare.commons.base.logging.LogUtils;
import it.pagopa.selfcare.commons.base.security.PartyRole;
import it.pagopa.selfcare.dashboard.connector.api.UserApiConnector;
Expand Down Expand Up @@ -41,6 +42,7 @@ public class UserConnectorImpl implements UserApiConnector {
static final String REQUIRED_INSTITUTION_ID_MESSAGE = "An Institution id is required";

@Override
@Retry(name = "retryTimeout")
public List<InstitutionBase> getUserInstitutions(String userId) {
log.trace("getUserProducts start");
UserInfoResponse userInfoResponse = userApiRestClient._usersUserIdInstitutionsGet(userId, null,
Expand All @@ -59,6 +61,7 @@ public List<InstitutionBase> getUserInstitutions(String userId) {
}

@Override
@Retry(name = "retryTimeout")
public UserInstitution getProducts(String institutionId, String userId) {
log.trace("getProducts start");
List<UserInstitutionResponse> institutionResponses = userInstitutionApiRestClient._institutionsInstitutionIdUserInstitutionsGet(
Expand All @@ -81,6 +84,7 @@ public UserInstitution getProducts(String institutionId, String userId) {
}

@Override
@Retry(name = "retryTimeout")
public Boolean hasPermission(String institutionId, String permission, String productId) {
log.trace("permissionInstitutionIdPermissionGet start");
log.debug("permissionInstitutionIdPermissionGet institutionId = {}, permission = {}, productId = {}", institutionId, permission, productId);
Expand All @@ -94,6 +98,7 @@ public Boolean hasPermission(String institutionId, String permission, String pro
}

@Override
@Retry(name = "retryTimeout")
public User getUserById(String userId, String institutionId, List<String> fields) {
log.trace("getUserById start");
log.debug("getUserById id = {}", userId);
Expand All @@ -105,6 +110,7 @@ public User getUserById(String userId, String institutionId, List<String> fields
}

@Override
@Retry(name = "retryTimeout")
public User searchByFiscalCode(String fiscalCode, String institutionId) {
log.trace("searchByFiscalCode start");
log.debug(LogUtils.CONFIDENTIAL_MARKER, "searchByFiscalCode fiscalCode = {}", fiscalCode);
Expand Down Expand Up @@ -147,6 +153,7 @@ public void updateUser(String userId, String institutionId, UpdateUserRequestDto
}

@Override
@Retry(name = "retryTimeout")
public Collection<UserInfo> getUsers(String institutionId, UserInfo.UserInfoFilter userInfoFilter, String loggedUserId) {
log.trace("getUsers start");
log.debug("getUsers institutionId = {}, userInfoFilter = {}", institutionId, userInfoFilter);
Expand All @@ -173,6 +180,7 @@ public Collection<UserInfo> getUsers(String institutionId, UserInfo.UserInfoFilt
}

@Override
@Retry(name = "retryTimeout")
public List<UserInstitution> retrieveFilteredUser(String userId, String institutionId, String productId) {
log.trace("retrieveFilteredUser start");
log.debug("retrieveFilteredUser userId = {}, institutionId = {}, productId = {}", userId, institutionId, productId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package it.pagopa.selfcare.dashboard.connector.rest;

import io.github.resilience4j.retry.annotation.Retry;
import it.pagopa.selfcare.dashboard.connector.api.UserGroupConnector;
import it.pagopa.selfcare.dashboard.connector.model.groups.*;
import it.pagopa.selfcare.dashboard.connector.model.user.User;
Expand Down Expand Up @@ -135,6 +136,7 @@ public void updateUserGroup(String id, UpdateUserGroup userGroup) {
}

@Override
@Retry(name = "retryTimeout")
public UserGroupInfo getUserGroupById(String id) {
log.trace("getUserGroupById start");
log.debug("getUseGroupById id = {}", id);
Expand Down Expand Up @@ -167,6 +169,7 @@ public void deleteMemberFromUserGroup(String id, UUID userId) {
}

@Override
@Retry(name = "retryTimeout")
public Page<UserGroupInfo> getUserGroups(UserGroupFilter filter, Pageable pageable) {
log.trace("getUserGroups start");
log.debug("getUserGroups institutionId = {}, productId = {}, userId = {}, pageable = {}", filter.getInstitutionId(), filter.getProductId(), filter.getUserId(), pageable);
Expand Down

0 comments on commit 461b99c

Please sign in to comment.