我有兴趣创建一个Spring独立应用程序,它将运行并等待使用Spring JMS从ActiveMQ队列接收消息.我搜索过很多地方,但找不到一种实现这种独立应用程序主方法的一致方法.Spring独立应用程序的示例似乎很少.我看过Tomcat,JBoss,ActiveMQ以及网络上的其他例子,但我还没有得出结论......
实现Java应用程序的主方法(特别是Spring with JMS)的最佳实践是什么?
更新:以下是一个例子:http://forum.springsource.org/showthread.php?t = 48197 这是最好的方法吗?
public static void main(String args[]) {
try {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
. . . . .
Object lock = new Object();
synchronized (lock) {
lock.wait();
}
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 24
使用Spring JMS时,您已经在配置中使用了自动启动的组件/ bean,并且在您停止应用程序之前将保持活动状态(从队列/主题中订阅和读取).
要启动并保持应用程序运行,因此加载applicationcontext应该足够了.好的做法虽然也是调用registerShutdownHook,所以在应用程序暂停(即通过控制台中的ctrl + c),你的bean正常关闭和处理:)
public static void main(String args[]) {
AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
context.registerShutdownHook();
}
Run Code Online (Sandbox Code Playgroud)
Dro*_*roo -4
尝试循环读取。如果找到消息,则对其进行处理,然后休眠并再次迭代。还要在其中放置某种终止符逻辑(中断线程)。您可以在 X 次尝试后终止、从文件中读取、终止 JVM、从队列中读取终止符消息等。
public static void main(String[] args) {
while(true) {
// look for some terminator
// attempt to read off queue
// process message
try {
TimeUnit.SECONDS.sleep(5);
} catch (Exception e) {
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27944 次 |
| 最近记录: |