2015-10-27 15 views
13

Tôi đang sử dụng Spring-Websockets 4.2 với SockJS.Tin nhắn một phần với SockJS trong Spring-Websockets 4.2

Vì các tin nhắn mà khách hàng nhận được có thể khá lớn, tôi muốn sử dụng một phần tin nhắn. Lớp con của tôi của TextWebSocketHandler không ghi đè lên supportPartialMessages để trả về true. Tuy nhiên, vì SockJsWebSocketHandler được tạo bởi Spring không hỗ trợ một phần thư, tôi vẫn gặp lỗi code=1009, reason=The decoded text message was too big for the output buffer and the endpoint does not support partial messages.

Như một giải pháp thay thế, tôi đã tăng kích thước bộ đệm lên 1 MB như được mô tả here, nhưng vì tôi phải hỗ trợ khá nhiều khách hàng (~ 2000 cùng một lúc), điều này đòi hỏi quá nhiều bộ nhớ.

Có cách nào để sử dụng một phần thư với SockJS không?

+0

Bạn có thể giải quyết vấn đề này không. Tôi cũng phải đối mặt với cùng một vấn đề và không thể tìm ra giải pháp? Ngoài ra các con số được đề cập trong 'container.setMaxTextMessageBufferSize (16384)', có phải là bit, byte kbs hay không? – BiJ

+0

Không, rất tiếc là không. Chúng tôi đã kết thúc việc tự mình thực hiện phần gửi tin nhắn một phần bằng cách chunking tại người gửi và tập hợp lại ở người nhận. SetMaxTextMessageBufferSize bằng byte AFAIK. – Jan

+0

Bạn có thể sử dụng bộ cân bằng tải giống như phiên để tách các tin nhắn không? Nó gần như âm thanh như bạn cần phải thực hiện một dòng phản ứng hoặc sử dụng một quy mô thích hợp ra hàng đợi tin nhắn bên ngoài của ổ cắm thông thường để xử lý tin nhắn của bạn. –

Trả lời

0

Nhìn vào những gì bạn đang cố gắng làm, về cơ bản bạn đang đệm 2 GB (Giả sử 1MB) trong RAM chỉ dành cho các thư đồng thời của bạn. Bạn cần thay đổi cơ sở hạ tầng, mở rộng theo chiều dọc hoặc nén luồng tin nhắn của mình. Nếu việc nén tin nhắn hoặc chia tỷ lệ theo chiều dọc không nằm trong câu hỏi, tôi sẽ nghĩ cách tốt nhất là:

1) Sử dụng cân bằng tải nội bộ với các phiên cố định để chia số người dùng đồng thời giữa các phiên bản máy chủ khác nhau. Hoặc ...

2) Triển khai hàng đợi thông báo phù hợp với quy mô với luồng phản ứng mà máy chủ đơn lẻ của bạn có thể lấy.

Kiến trúc ứng dụng của bạn trông không ổn.

Các vấn đề liên quan