[dubbo]为什么两次同样的请求,协议却不一样

2023-03-05 10:23:13 +08:00
 shayang888
环境:
jdk:19
dubbo:3.2.0.beta-5
springboot: 3.0.4
这是我的 dubbo 过滤器
@Activate(group = CommonConstants.CONSUMER, value = "cookieValidationFilter")
public class CookieValidationFilter implements Filter {
    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        RpcContext context = RpcContext.getServerContext();
        return invoker.invoke(invocation);
    }
}
这是我的 controller:
@DubboReference
    UserService userService;

    @PostMapping(value = "/sign_in", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public ServerResponseEntity<Object> loginController(ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
        RpcContext context = RpcContext.getServerContext();
        System.out.println("rest 接口");
        System.out.println(context.getProtocol());
        System.out.println(context.getRemoteAddressString());
        System.out.println("-----------------------------------------");
        String userInfo = serverHttpRequest.getHeaders().getFirst(USERINFO);
        ServerResponseEntity<Object> responseEntity = userService.loginService(userInfo);
        serverHttpResponse.addCookie(ResponseCookie.from("COOKIE_ID", String.valueOf(responseEntity.getData())).build());
        return responseEntity;
    }
这是我的 service:
@Override
    public ServerResponseEntity<Object> loginService(String userInfo) {
        try {
            responseEntity = new ServerResponseEntity<>(0, "login success!", Decryptor.decrypt(userInfo));
        } catch (Exception e) {
            logger.info(e.toString());
        }
        return responseEntity;
    }
这是我的 consumer 配置文件:
server.port=8081

spring.application.name=consumer
spring.cloud.nacos.discovery.server-addr=192.168.220.128:8848

dubbo.application.name=consumer
dubbo.registry.address=nacos://192.168.220.128:8848
dubbo.protocol.port=-1
dubbo.consumer.protocol=tri
dubbo.consumer.filter=appended
dubbo.application.qos-port=22223
这是打印结果:
这是客户端连续两次调用 /sign_in 的打印结果
rest 接口
null
null:0
-----------------------------------------
rest 接口
tri
null:0
-----------------------------------------

问:为什么前后两次协议打印结果不一样,第一次 null ,第二次是 tri

1336 次点击
所在节点    Java
2 条回复
v2e0xAdmin2
2023-03-05 13:53:41 +08:00
是不是服务端有 2 个节点? 2 个节点的代码不一样导致的?
shayang888
2023-03-05 16:52:26 +08:00
@v2e0xAdmin2 应该不是这个,nacos 里就 3 个,一个映射的 UserService ,一个 provider ,一个 consumer

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/921237

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX