Azure/qpid-proton-j-extensions maxframesize 将消息的大小限制为 4KB
Azure/qpid-proton-j-extensions maxframesize limits the size of messages to 4KB
Azure/qpid-proton-j-extensions
如果 dsetination 缓冲区小于似乎被硬编码为 4KB 加上一些 header 信息的消息流,WebSocketHandlerImpl 将抛出异常...
据我所知,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
,我认为你对代码dstBuffer.capacity() >= webSocketFrame.size()
和变量webSocketFrame
的理解有误。
// 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
Azure/qpid-proton-j-extensions 如果 dsetination 缓冲区小于似乎被硬编码为 4KB 加上一些 header 信息的消息流,WebSocketHandlerImpl 将抛出异常... 据我所知,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
,我认为你对代码dstBuffer.capacity() >= webSocketFrame.size()
和变量webSocketFrame
的理解有误。
// 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