等待java

时间:2015-08-09 14:54:05

标签: java ejb jms message-queue message-driven-bean

我想知道是否存在一个框架(或任何方式)以异步方式等待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我可以创建一个等待消息的方法,但是如果我有很多消息,我将破坏许多方法中的代码,我将丢失局部变量的值,这使得非常难看的代码。

1 个答案:

答案 0 :(得分:0)

JMS是java(java-ee)标准的方法。您的需求不是问题,您可以使用每种消息类型的MDB(和队列)或单个MDB以及策略模式来为每种消息类型选择适当的执行程序。

否则,对于基于事件/反应的框架,您可以查看akkaRxJava