【发布时间】:2015-12-10 23:51:27
【问题描述】:
我有一个 javax.jms.Queue 队列并让我的侦听器监听这个队列。我得到消息(一个字符串)并执行一个进程,将字符串作为输入参数传递给该进程。
我只想同时运行该进程的 10 个实例。一旦这些都完成了,那么只有下一条消息应该被处理。
如何实现?因为它一次读取所有消息并运行该进程的多个实例,导致服务器挂起。
// using javax.jms.MessageListener
message = consumer.receive(5000);
if (message != null) {
try {
handler.onMessage(message); //handler is MessageListener instance
}
}
【问题讨论】:
-
请显示您的侦听器在哪里提取消息并将它们放入进程的代码。
-
我正在使用 javax.jms.MessageListener。消息 = 消费者.receive(5000); if (message != null) { try { handler.onMessage(message); } handler 是 MessageListener 实例。
-
您的进程是在线程上执行,还是在另一个 JVM/native/其他进程上执行?
-
它实际上是在另一个JVM上运行的。实际上我运行了一个可执行文件,它接受字符串作为我从 jms 队列中获取的参数。现在我希望一次只运行该 exe 的 10 个实例,一旦这 10 个完成工作,就应该处理下一条消息,依此类推。
-
您是否知道外部进程何时终止或所有十个进程何时终止(成功/不成功),以及该消息是如何传递/处理的?这是否必须以十个为一组进行,或者您是否可以在另一个进程终止时立即启动一个新进程,而不是等待所有十个进程终止?
标签: java multithreading jms