2010-02-19 13 views
10

Jak mogę wykonać długie odpytywanie przy użyciu ramy netty? Powiedz na przykład, że pobieram http://localhost/waitforxdługi sondowanie netty nio framework java

, ale waitforx jest asynchroniczny, ponieważ musi czekać na wydarzenie? Powiedzmy na przykład, że pobiera coś z kolejki blokującej (może pobierać tylko dane w kolejce). Podczas pobierania pozycji z kolejki chciałbym wysłać dane z powrotem do klienta. Mam nadzieję, że ktoś może mi dać kilka wskazówek, jak to zrobić.

Dziękujemy

Odpowiedz

10

Można napisać nagłówek odpowiedzi, a potem wysłać ciało (treść) później z innego wątku.

+0

Czy to faktycznie działa? Czy możesz pisać na kanale z innego wątku? To wątek bezpieczne? –

+0

Tak, jest bezpieczny dla wątków –

+1

W jaki sposób "inny wątek" wie, którego kanału użyć? Na przykład, klient1 wykonuje długą ankietę, czy muszę umieścić kanał w HashMap i pobrać go po wystąpieniu zdarzenia, aby móc wysłać częściową zawartość? – pkrish

0

Można również wykonać następujące czynności w [sfnrpc]: http://code.google.com/p/sfnrpc

Object object = RPCClient.getInstance().invoke("#URN1","127.0.0.1:6878","echo",true,60,"", objArr,classArr, sl); 

Prawdziwa komunikacja przyczyny być synchroniczne.