我要实现的目标是泊坞化一个使用骆驼定期检查外部休息端点并将其接收的数据插入数据库的spring boot应用程序。我目前使用计时器来触发路由。
但是我需要对其进行泊坞化,这将产生一些问题,例如触发从所有容器发出的路线。
我知道可以使用cron表达式的调度程序,但是同样会从所有容器中触发它。
正在寻求专家的一些设计见解。
谢谢!
答案 0 :(得分:1)
如果您将任何数据库用作应用程序的一部分,则任务将很简单。创建一个表,并在列status
中放置一个条目,分别为running
和completed
。在访问外部api之前,请先通过scheduler
来检查数据库中的status
。如果是running
,则中止呼叫,或者状态为completed
,请运行作业并呼叫外部服务。您还可以使用in-memory
或memcache
之类的redis
缓存来替代数据库。
最好的方法是通过某些外部触发器(例如control-M
中的Cloudwatch
或AWS
来触发所有容器的负载均衡器,这样请求将被定向到一个容器,因此不会进行其他调用对外部api进行。否则您必须使用容器间通信,这将增加应用程序的复杂性。