微服务之间调用时时常遇到需要将服务A的token传递给服务B的情况,如果每个服务调用单独写就太僵硬了,之前试过自己写AOP去处理这个问题,功能上虽然没问题,但是总感觉比较low,最近在解决另外一个问题时,意外学到了一个解决方法。
这里贴一下核心代码
@Slf4j @Service public class FeignServiceImpl implements FeignService { @Autowired private ConfigurableEnvironment environment; @Autowired private FeignClientRequestInterceptor requestInterceptor; private final Feign.Builder nameBuilder; @Autowired public FeignServiceImpl(Decoder decoder, Encoder encoder, Client client, Contract contract) { // nameBuilder直接使用client,它会使用负载均衡 nameBuilder = Feign.builder() .client(client) .encoder(encoder) .decoder(decoder) .contract(contract); } @Override public <T> T newInstanceByTenantName(Class<T> apiType, String shortName) { String bsServiceName = environment.getProperty("feign.name"); String instanceName = "http://" + shortName.toLowerCase() + "-" + bsServiceName; return

本文探讨了在微服务架构中如何优雅地处理跨服务调用时的token传递问题。通过使用FeignBuilder和拦截器,可以在不增加代码冗余的情况下,动态地将token添加到请求头中,实现服务间的安全通信。
最低0.47元/天 解锁文章
2495

被折叠的 条评论
为什么被折叠?



