有没有办法从Web应用程序发送多个请求而不使用消息传递协议?

时间:2014-02-20 04:56:47

标签: java multithreading web-applications architecture mq

我们在申请中遇到以下情况。

用户导航到显示50个帐户列表的页面以及其他详细信息。 要将在线服务器发送消息(每个帐户一个)的附加信息发送到MQ队列,有一个批处理作业侦听此队列并选择这些消息并通过WS或EJB调用调用外部系统并以队列中的响应,在线服务器从中获取并在屏幕上显示它。

  1. 在线服务器向MQ发送多条消息
  2. 批处理作业侦听此队列
  3. 拾取消息,并相应地调用外部系统。
  4. 创建响应并将其放回队列
  5. 在线服务器选择这些消息并显示消息 屏幕。
  6. 在这种情况下,有许多冗余步骤和太多故障点。但是我知道为了提高性能效率已经做到了。

    我想实现这样的目标:

    1)在线直接调用外部系统并获得响应。

    • 我可以这样做:在每个帐户的循环中,这将花费我 表现很好。
    • 我可以打开多个线程,然后触发请求,不过我是 告诉从网络应用程序打开多个线程是NO-NO [可以有人 解释原因?]

    我有什么方法/机制可以用来实现这个目标吗?

    感谢您花时间阅读这么长的帖子。

2 个答案:

答案 0 :(得分:1)

重新多线程:

对于EJB,它不仅气馁,而且明确禁止specification 但是对于J2EE的其他领域,最好通过使用Concurrency Utils来确保您的新线程是由容器创建和管理的,从而保证所有EE服务都可用。

答案 1 :(得分:0)

您也可以使用WorkManagers在EJB中创建新线程。请参阅this documentation(它为WebLogic Server编写,但可以在包含 CommonJ 的每个Application Server中使用)