gpt4 book ai didi

java - Azure/qpid-proton-j-extensions maxframesize 将消息大小限制为 4KB

转载 作者:行者123 更新时间:2023-12-02 06:22:07 25 4
gpt4 key购买 nike

Azure/qpid-proton-j-扩展如果设置缓冲区小于消息流,WebSocketHandlerImpl 会抛出异常,消息流似乎被硬编码为 4KB 加上一些 header 信息...据我所知,Azure 服务总线允许消息最大为 256KB,高级版为 1MB,加上 64KB header

我们是否可以将其提高到 256KB?

WebSocketHandlerImpl:
dstBuffer.clear();
if (dstBuffer.capacity() >= webSocketFrame.size()) {
dstBuffer.put(webSocketFrame.toByteArray());
} else {
throw new OutOfMemoryError("insufficient output buffer size");
}
} else {

WebSocketImpl:
private int maxFrameSize = (4 * 1024) + (16 * WebSocketHeader.MED_HEADER_LENGTH_MASKED);

最佳答案

根据源码WebSocketHandlerImpl.java#L90如下所示,我认为您对带有变量 webSocketFrame 的代码 dstBuffer.capacity() >= webSocketFrame.size() 的理解有误。

// Auto growing buffer for the WS frame, initialized to minimum size
ByteArrayOutputStream webSocketFrame = new ByteArrayOutputStream(WebSocketHeader.MIN_HEADER_LENGTH_MASKED + dataLength);

webSocketFrame 变量尚未硬编码为固定大小,它是一个具有自动增长缓冲区的 ByteArrayOutputStream 对象。但dstBuffer变量是一个ByteBuffer对象,其payload和websocket header大小固定,请引用测试代码WebSocketHandlerImplTest.java ,如下所示。

// public void testWrapBuffer_short_payload() {
// L296
int payloadLength = 100;
int messageLength = payloadLength + WebSocketHeader.MIN_HEADER_LENGTH_MASKED;

// L305
ByteBuffer srcBuffer = ByteBuffer.allocate(payloadLength);
ByteBuffer dstBuffer = ByteBuffer.allocate(messageLength);

// And others functions testWrapBuffer_xxxx_payload

关于java - Azure/qpid-proton-j-extensions maxframesize 将消息大小限制为 4KB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55825448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com