我正在编写一个涉及对其他应用程序进行异步调用的应用程序。我的应用程序必须不断将此请求发送到其他应用程序,直到我得到特定回复。我可以在5秒的时间间隔内发送此请求。
使用线程不是一个好主意,实现这个的最佳做法是什么
当我得到具体的回复时,我必须将它存储在我的app db中。
答案 0 :(得分:2)
我不认为还有另一种方法可以做到这一点,至少在某种程度上创建一个新线程(或使用非活动线程)来做到这一点。但是,您可能正在寻找一些东西。 Spring提供了可用于每5秒发送一次请求的任务作业。
要通过注释执行此操作,必须先将此命名空间添加到config.xml
xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
然后添加此定义:
<task:annotation-driven>
最后,您可以将此简单注释添加到将向其他服务器执行请求的方法
@Scheduled(fixedRate = 5000) //time in milliseconds
有关此内容的更多信息,请参阅此site。
答案 1 :(得分:0)
如果您不需要控制新胎面,并且当这些线程请求必须死亡时,您可以使用Spring异步。https://spring.io/guides/gs/async-method/
如果你想要一个额外的控件,你也可以使用Spring的DeferredResult http://www.javacodegeeks.com/2013/03/deferredresult-asynchronous-processing-in-spring-mvc.html 最后一个将作为Future对象。