2015-08-09 2 views
0

Я хочу знать, существует ли фреймворк (или любой способ), чтобы ждать сообщения внутри java-кода по асинхронному пути. Я повторяю «асинхронный способ».Ждать асинхронного сообщения на java

Например:

int a=5; 
MyObject mio= new MyObject(); 
mio.setx(6); 
String message='x|1|5ABC'; 

MOM.enqueue(message,'myResponseQueue'); // <-- Shoot and forget!! 
String res=MOM.dequeue('myResponseQueue'); // instance of class sleep (not in memory) waiting for message. 

if (a=mio.getx()){int b=6; } // code awake and continue 
a=7; 

message='x|2|6ABC'; 

MOM.enqueue(message,'myResponseQueue'); // <-- Shoot and forget again!! 
String res=MOM.dequeue('myResponseQueue'); // instance of class sleep (not in memory) again waiting for message.  

if (res!=null){ // <-- code awake again 
    if (a==5){int b=7;} 
} 

Я знаю, что с Message-Drive Bean я могу создать метод для ожидания сообщения, но если у меня есть много сообщений, я сломаю код во многих методах и я буду потеряли значения локальных переменных, это делает очень уродливый код.

ответ

0

JMS - стандартный способ java (java-ee). Ваши требования не являются проблемой, вы можете пойти с MDB (и очередью) на тип сообщения или один MDB, связанный со стратегическим шаблоном, чтобы выбрать соответствующего исполнителя для каждого типа сообщения.

В противном случае для события на основе/реактивная рамки вы можете посмотреть на любой akka или RxJava