我会建议创建一个并发的单个服务。您可以使用线程池并在到达时向其提交作业。那么您将不必担心影响您整个服务的长时间运行的工作。
但是,这意味着您将不得不担心对各种不同服务的并发访问。如果每个服务只会一次处理单个事务,那么为每种类型的请求创建服务可能更容易。
如果您决定使用并发服务,那么以下代码是您如何使用ExecutorService
线程池的示例。
// create a thread pool with a dynamic number of workers
ExecutorService threadPool = Executors.newCachedThreadPool();
while (!shutdown) {
// read your SMS job into an object
SmsMessage message = receiveSmsMessage();
threadPool.submit(new SmsJob(message));
}
// once we have submitted all jobs to the thread pool, it should be shutdown
threadPool.shutdown();
...
public class SmsJob implements Runnable {
private SmsMessage message;
public MyJobProcessor(SmsMessage message) {
this.message = message;
}
public void run() {
// process the message
}
}
此刻1个服务= 1个事务,所以我会坚持每个请求一个服务。但很高兴知道如何同时做到这一点。 – Axxiss 2012-08-01 09:10:03