【问题标题】:Wait for a asynchronous message on java等待java上的异步消息
【发布时间】:2015-11-01 12:54:13
【问题描述】:

我想知道是否存在一个框架(或任何方式)以异步方式在 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;}
}

我知道使用消息驱动 Bean 我可以创建一个方法来等待消息,但是如果我有很多消息,我会在许多方法中破坏代码并且我会丢失局部变量的值,这会产生非常丑陋的代码。

【问题讨论】:

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


    【解决方案1】:

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

    否则,对于基于事件/反应式框架,您可以查看 akka 或 RxJava

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-12
      • 2020-04-23
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 2012-12-23
      • 2020-12-13
      • 1970-01-01
      相关资源
      最近更新 更多