Comments 12
Executors.newCachedThreadPool() это не слишком правильно — в пике нагрузки может наплодиться много тредов. Лучше делать ограниченный пул с очередью
А можно поподробнее, где и из-за чего блокировка происходит?
А с Datastore похоже действительно могут быть проблемы… Чуть позже переделаю.
А с Datastore похоже действительно могут быть проблемы… Чуть позже переделаю.
да, длинные операции нельзя в асинхронных обработчиках делать. Впрочем, в приведенном случае это компенсируется Executors.newCachedThreadPool(), так что будет работать, но иногда как синхронный поток-на-хэндлер сервер, а это, видимо не то, что вам хотелось. Для подобных вещей в Netty есть несколько механизмов, например ExecutionHandler. Можно еще и чанковый ридер прикрутить, но это несколько сложнее.
Скажите, а почему вы не использовали encoder и decoder, а «парсите» пакет прям хендлере?
Ещё «Получение сообщений от клиентов.» сделал копи паст в свой tcp проект, и он не коррекно обрабатывает пакеты. Если юзер подключается и посылает 1 пакет и отключается всё норм, но если к примеру придёт больше 1 пакета они не коррекно обрабатываются.
Ещё «Получение сообщений от клиентов.» сделал копи паст в свой tcp проект, и он не коррекно обрабатывает пакеты. Если юзер подключается и посылает 1 пакет и отключается всё норм, но если к примеру придёт больше 1 пакета они не коррекно обрабатываются.
Sign up to leave a comment.
Пишем простой UDP BitTorrent-трекер на Netty + MongoDB