Ja sam radio slican sistem u Javi, ali u kombinaciji sa Oracle-om.
Rijec je o visokotransakcionom sistemu ( preko njega prolazi veliki broj poruka dnevno) i da kucnem u drvo - sve radi super vec godinama.
Ako ne zelis poslusati savjet Dejana Lozanovica, onda predlazem sljedece:
Kreiraj ServerSocket koji ce osluskivati na nekom portu.
On ima metodu accept() pomocu koje prihvata zahtjeve za konekcijom i koja vraca Socket koji ce da preuzme iscitavanje samog zahtjeva.
Sta ces dalje raditi sa tekstom/objektom koji preko njega primis- to je vec tvoje.
Da bi ovakav sistem zaista radio brzo i bez stajanja u redu cekanja ( osim onog cekanja koje se mora desiti zbog same biznis logike tvoje aplikacije ), ovakav sistem moras implementirati da bude multithreading.
Dakle, svaku obradu podataka , koristeci Socket kreiran prilikom accept()-a , radi kroz poseban thread.
kreiranje iole slozenije multithreading aplikacije nije ni malo bezazlen posao, i bilo bi dobro da veoma dobro poznajes principe sinhronizacije, na koji nacin ju je najbolje implementirati, koji objekti iz standardne biblioteke su thread-safe, kako efikasno kreirati thread-safe objekat i slicno...
Sto se tice baze i konekcija na nju, MySQL ce, naravno, odraditi posao.
Predlazem da koristis InnoDB tabele a ne MyISAM jer se kod MyISAM prilikom DML operacija lokuje citava tabela, a ne samo zapis kao u InnoDB-u.
Takodje, mozda bi mogao razmisliti o connection pool-u, kada su u pitanju konekcije ka bazi.
A onda tu dolaze sljedeci problemi: ako se iz nekog razloga poruke ne unesu u bazu, sta sa njima? da li postoji prioritet unosa u bazu? Jer ako postoji, da li unositi naredne, ako prethodne nisu uspjele? Stogod uradio sa neuspjelima, kada i kako ih kasnije unijeti u bazu, i slicno...
E, ida... nikakvo gledanje stanja svakih x milisekundi. Svaki thread ce obavljati svoj dio posla, a ti samo vodis racuna o njihovoj sinhronizaciji. Dakle, nema potreba da ih neko svakih x sekundi osluskuje... Sve pocinje i zavrsava se prirodnim tokom.
Ako bas budes zelio da bude jedan thread, ili da "nesto" drugo kontrolise tok podataka u multithread sistemu, pa da sve bude da kazem "event driven" , uvijek se moze implementirati i npr. observer pattern. Cistije je nego osluskivanje svakih x milisekundi.
to je to ukratko, zemljak ;-)
there's something out there
waiting for us,
and it ain't no man...