GitHub user pxd98 closed a discussion: rocketmq5 proxy 的兼容性问题

我的服务端是5.2.0,客户端是4.9.1,在发送消息的时候报了 15 Request doesn't have field 
bname的报错,我看proxy里的源码是需要判断请求里是否存在bname这个字段
```
if (request.getCode() == RequestCode.SEND_MESSAGE_V2) {
            if 
(request.getExtFields().get(BROKER_NAME_FIELD_FOR_SEND_MESSAGE_V2) == null) {
                return 
RemotingCommand.buildErrorResponse(ResponseCode.VERSION_NOT_SUPPORTED,
                    "Request doesn't have field bname");
            }
            brokerName = 
request.getExtFields().get(BROKER_NAME_FIELD_FOR_SEND_MESSAGE_V2);
        } else {
            if (request.getExtFields().get(BROKER_NAME_FIELD) == null) {
                return 
RemotingCommand.buildErrorResponse(ResponseCode.VERSION_NOT_SUPPORTED,
                    "Request doesn't have field bname");
            }
            brokerName = request.getExtFields().get(BROKER_NAME_FIELD);
        }
```
我排查下来是因为4.9.1版本的SendMessageRequestHeader中缺少了requestHeader.setBname(mq.getBrokerName());这段代码和RpcRequestHeader这个父类。
我修改了这部分代码并在createSendMessageRequestHeaderV2中增加了字段n后就可以正常发送消息了,但是我看兼容性文档中说rocketmq5是完全兼容rocketmq4.9版本的,所以想问一下在不升级客户端的情况下是否有其他方式发送消息或者说只能升级客户端版本才行,谢谢。
具体的修复是不是在这里完成的?[[ISSUE #3905] Support bname in protocol for 4.9.x 
client](https://github.com/apache/rocketmq/pull/5161)

GitHub link: https://github.com/apache/rocketmq/discussions/7919

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscr...@rocketmq.apache.org

Reply via email to