2012-04-03 33 views
11

cụ thể là tôi quan tâm đến trường hợp đầu kia của kênh chết bất ngờ (ví dụ: quá trình bị giết). có vẻ như netty không đáng tin cậy khi một kênh đóng/ngắt kết nối sự kiện, đôi khi nó xảy ra và đôi khi nó không xảy ra. nó cũng không nhất thiết phải ném một SocketException để thiết lập lại kết nối.có thể phát hiện kênh/ngắt kết nối đáng tin cậy không?

cho những gì đáng giá, tôi cũng đã cố gắng viết thư cho kênh nhưng điều này cũng tiếp tục hoạt động mà không cần ném ngoại lệ hoặc kích hoạt bất kỳ sự kiện nào khác.

tôi đang thử nghiệm điều này trên các cửa sổ, với nấc 3.3.0.Final, nếu điều đó tạo ra bất kỳ sự khác biệt nào.

Trả lời

5

Trong một số trường hợp như bạn đã nêu, netty không thể phát hiện xem kênh có được đóng hay không. Here là cùng một vấn đề được đề cập trong câu hỏi này. Một cách để giải quyết các provlem đang sử dụng heartbeat messages. Netty hỗ trợ nhịp tim với IdleStateHandler.

Ngoài ra bạn có thể xem lại các tài liệu tham khảo cho IdleStateHandler:

+0

một vấn đề là Netty vui vẻ tiếp tục viết thư cho một kênh đã được đóng cửa ở bên kia kết thúc. cách duy nhất để phát hiện kênh một cách đáng tin cậy và mong đợi phản hồi là gì? –

+0

Nếu bạn colose kết nối theo cách thủ công, nó sẽ hoạt động. Có thể có cách thay thế để phát hiện ngắt kết nối nhưng đây là tài liệu gì cho netty. Đề xuất thứ hai của tôi là kiểm tra và đọc về phương thức setReadable và isWritable của Channel. Bạn có thể kiểm soát trạng thái kênh bằng Channel.isWritable trong nhà sản xuất và làm cho kênh có thể đọc được với Channel.setReadable trong người tiêu dùng. Tôi không chắc chắn nhưng thủ thuật cuối cùng này có thể là công việc. – ozhan

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