【发布时间】:2010-10-05 14:02:48
【问题描述】:
我很难弄清楚如何构建我系统的最后一部分。目前我正在运行一个 Tomcat 服务器,它有一个响应客户端请求的 servlet。每个请求依次将处理消息添加到异步队列(我可能会通过 Spring 使用 JMS,或者更可能使用 Amazon SQS)。
事件的顺序是这样的:
发送方:
1. 接受客户请求
2. 将一些数据添加到与此请求相关的数据库中,并具有唯一 ID
3. 在消息队列中添加一个代表这个请求的消息对象
接收方:
1.从队列中拉出一个新的消息对象
2. 打开对象并根据 msg 对象中包含的信息从网站获取一些信息。
3. 发送电子邮件提醒
4. 使用已完成此请求的操作的信息更新我的数据库行(相同的唯一 ID)。
我很难弄清楚如何正确处理接收方。一方面,我可能可以创建一个简单的 java 程序,我从命令行启动该程序,该程序选择队列中的每个项目并对其进行处理。那安全吗?让该程序作为 Tomcat 容器内的另一个线程运行是否更有意义?我不想连续执行此操作,这意味着接收端应该能够一次处理多个对象——使用多个线程。我希望它每天 24 小时始终运行。
构建接收端有哪些选择?
【问题讨论】:
-
如果有人对我最终完成的工作感兴趣。我使用了 Amazon 的 SQS 并有一个轮询队列的 java 客户端(使用 spring 框架)。当它找到一个 msg 时,它会处理它并返回等待状态。我可能会添加 Quartz 线程,现在我只是启动多个进程。
-
我面临着类似的问题。我想知道 Java 客户端是如何实现的。我希望它不会在消息的无限循环和池中运行?
标签: java asynchronous queue jms