Kao GWT® dobavljač, imao sam dosta iskustva u integraciji različitih tehnologija s GWT®. Jedna takva tehnologija koja mi je u zadnje vrijeme zapela za oko je RabbitMQ. To je moćan broker za poruke koji stvarno može napuniti vaše GWT® aplikacije. U ovom blogu podijelit ću s vama kako možete koristiti GWT® s RabbitMQ i podići svoje projekte na višu razinu.
Razumijevanje osnova
Prije nego što zaronimo u integraciju, prođimo brzo što su GWT® i RabbitMQ. GWT® ili Google Web Toolkit je razvojni alat za izradu i optimizaciju složenih aplikacija temeljenih na pregledniku. Omogućuje pisanje AJAX aplikacija u Javi i njihovo prevođenje u JavaScript. S druge strane, RabbitMQ je broker poruka otvorenog koda koji implementira Advanced Message Queuing Protocol (AMQP). Aplikacijama omogućuje komunikaciju i dijeljenje podataka slanjem i primanjem poruka.
Zašto kombinirati GWT® i RabbitMQ?
Postoji nekoliko razloga zašto biste mogli koristiti GWT® s RabbitMQ. Prvo, može poboljšati mogućnosti vaše GWT® aplikacije u stvarnom vremenu. Uz RabbitMQ sustav čekanja poruka, možete slati i primati poruke u stvarnom vremenu, što je odlično za aplikacije koje zahtijevaju trenutna ažuriranja, poput aplikacija za chat ili platformi za trgovanje.
Drugo, poboljšava skalabilnost vaše aplikacije. RabbitMQ može učinkovito obraditi veliki broj poruka i može rasporediti opterećenje na više poslužitelja. To znači da kako vaša aplikacija raste, RabbitMQ može skalirati s njom.
Konačno, dodaje sloj razdvajanja između različitih dijelova vaše aplikacije. Korištenjem RabbitMQ-a kao brokera poruka, različite komponente vaše GWT® aplikacije mogu komunicirati jedna s drugom bez tijesnog povezivanja. To vašu aplikaciju čini modularnijom i lakšom za održavanje.
Postavljanje okoline
Prvi korak u korištenju GWT® s RabbitMQ je postavljanje okruženja. Morat ćete imati Java i GWT® instalirane na vašem sustavu. Također ćete morati preuzeti i instalirati RabbitMQ. Nakon što ste sve instalirali, možete početi stvarati svoj GWT® projekt.


Za izradu novog GWT® projekta možete koristiti alate naredbenog retka GWT® SDK-a. Otvorite svoj terminal i pokrenite sljedeću naredbu:
java -jar gwt-dev.jar com.google.gwt.dev.codeserver.OptionParser -gen gen com.example.MyProject
Zamijeniticom.example.MyProjects nazivom vašeg projekta. Ovo će generirati novi GWT® projekt s osnovnom strukturom.
Dodavanje RabbitMQ vašem GWT® projektu
Sada kada ste postavili svoj GWT® projekt, vrijeme je da mu dodate RabbitMQ. Morat ćete dodati RabbitMQ Java klijentsku biblioteku u classpath vašeg projekta. To možete učiniti tako da preuzmete JAR datoteku s web stranice RabbitMQ i dodate je u svoj projektlibimenik.
Nakon što dodate RabbitMQ Java klijentsku biblioteku, možete početi pisati kod za povezivanje s RabbitMQ poslužiteljem. Evo jednostavnog primjera kako se spojiti na RabbitMQ poslužitelj i poslati poruku:
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import java.io.IOException; import java.util.concurrent.TimeoutException; public class RabbitMQSender { private final static String QUEUE_NAME = "hello"; public static void main(String[] args) throws IOException, TimeoutException { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); pokušaj (Connection connection = factory.newConnection(); Kanal kanala = connection.createChannel()) { channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "Hello, World!"; channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8")); System.out.println(" [x] Poslano '" + poruka + "'"); } } }
Ovaj kod stvara vezu s RabbitMQ poslužiteljem koji radilokalni domaćin, deklarira red pod nazivomZdravo, i šalje poruku u red čekanja.
Integracija RabbitMQ s GWT® kodom klijenta
Za integraciju RabbitMQ-a s kodom vašeg GWT® klijenta morat ćete upotrijebiti tehniku pod nazivom "RPC preko AMQP-a". To uključuje slanje zahtjeva s vašeg GWT® klijenta RabbitMQ poslužitelju, koji zatim prosljeđuje zahtjeve aplikaciji na strani poslužitelja na obradu. Aplikacija na strani poslužitelja zatim šalje odgovor natrag RabbitMQ poslužitelju, koji ga prosljeđuje GWT® klijentu.
Evo jednostavnog primjera kako implementirati RPC preko AMQP-a u GWT® aplikaciji:
import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.Window; import com.rabbitmq.client.*; import java.io.IOException; import java.util.UUID; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeoutException; javna klasa GwtRabbitMQExample implementira EntryPoint { private static final String RPC_QUEUE_NAME = "rpc_queue"; @Override public void onModuleLoad() { try { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Kanal kanala = veza.createChannel(); String replyQueueName = channel.queueDeclare().getQueue(); AMQP.BasicProperties props = new AMQP.BasicProperties .Builder() .correlationId(UUID.randomUUID().toString()) .replyTo(replyQueueName) .build(); String poruka = "30"; channel.basicPublish("", RPC_QUEUE_NAME, props, message.getBytes("UTF-8")); konačni BlockingQueue<String> odgovor = novi LinkedBlockingQueue<>(); String ctag = channel.basicConsume(replyQueueName, true, (consumerTag, delivery) -> { if (delivery.getProperties().getCorrelationId().equals(props.getCorrelationId())) { response.offer(new String(delivery.getBody(), "UTF-8")); } }, consumerTag -> { }); Rezultat niza = response.take(); channel.basicCancel(ctag); Window.alert("Rezultat: " + rezultat); kanal.zatvori(); veza.zatvori(); } catch (IOException | TimeoutException | InterruptedException e) { e.printStackTrace(); } } }
Ovaj kod šalje zahtjev poslužitelju RabbitMQ tražeći rezultat određene operacije. Aplikacija na strani poslužitelja zatim obrađuje zahtjev i šalje odgovor natrag GWT® klijentu, koji prikazuje rezultat u okviru s upozorenjem.
Korištenje kompozitnih materijala uz GWT® i RabbitMQ
U nekim primjenama možda ćete morati razmotriti i upotrebu kompozitnih materijala. Na primjer, ako gradite hardversku komponentu koja se integrira s vašim sustavom temeljenim na GWT® i RabbitMQ, možda će vam trebati materijali poputCFRT traka,Protuklizna ploča od stakloplastike, iliFRP list. Ovi materijali nude jedinstvena svojstva kao što su visoka čvrstoća, otpornost na koroziju i protuklizne površine, što može biti vrlo korisno u različitim scenarijima.
Zaključak i poziv na akciju
Integracija GWT® s RabbitMQ može donijeti mnogo prednosti vašim aplikacijama. Može poboljšati mogućnosti rada u stvarnom vremenu, skalabilnost i modularnost. Ako ste zainteresirani za korištenje GWT® u svojim projektima i želite dalje istražiti njegovu integraciju s RabbitMQ ili ako imate bilo kakvih pitanja o kompozitnim materijalima koje sam ranije spomenuo, slobodno nam se obratite. Ovdje smo da vam pomognemo da maksimalno iskoristite ove tehnologije i materijale u svojim aplikacijama.
Reference
- RabbitMQ dokumentacija
- GWT® dokumentacija
- Izvješća o industriji kompozitnih materijala