首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS豆柄中Spring作业的双执行(2个线程)

AWS豆柄中Spring作业的双执行(2个线程)
EN

Stack Overflow用户
提问于 2014-09-09 12:06:31
回答 1查看 891关注 0票数 0

我有一个Java + Spring (3.2.9.RELEASE)堆栈,部署在AWS弹性Bean秸秆中,配置为最大为1个实例。但是,我注意到我的后台作业在两个不同的线程中连续执行两次。

后台作业计划为cron作业,Spring设置:

代码语言:javascript
复制
<task:annotation-driven scheduler="scheduler" />
<task:scheduler id="scheduler" pool-size="5" />
<task:scheduled-tasks scheduler="scheduler">

    <task:scheduled ref="className1" method="methodName1"
        cron="${scheduler.property1name.cronschedule}" />

    <task:scheduled ref="className2" method="methodName2"
        cron="${scheduler.property2name.cronschedule}" />

    <task:scheduled ref="className3" method="methodName3"
        cron="${scheduler.property3name.cronschedule}" />

</task:scheduled-tasks>

由于应用程序逻辑的原因,methodName1是唯一实际执行任务(methodName2和其他任务不满足应用程序逻辑条件)的任务。由于我注意到methodName1被执行了两次,所以我添加了日志记录以查看它来自何处:

代码语言:javascript
复制
public void methodName1()
{
    // DEBUGGING to see which machine is running in AWS
    try
    {
        java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost();
        logger.debug("Hostname of local machine: " + localMachine.getHostName() + "/ " + localMachine.getHostAddress());
    }
    catch(Exception ex)
    {
        logger.debug("Failed to retrieve machine name", ex);
    }
    // DEBUGGING

    actuallyExecuteMethodName1();
}

现在,这段代码在过去一年中一直运行在我们自己的内部服务器(单节点设置)中,没有任何问题。最近,我们将这个应用程序转移到AWS中,更具体地说,迁移到了ElasticBean秸秆。我们知道我们还没有配置后台作业来处理多节点环境,因此我们将弹性Bean秸秆设置为具有最小/最大值为1的实例,直到我们做出必要的更改。

查看AWS的应用程序日志:

代码语言:javascript
复制
04:15:00,002 [scheduler-3] DEBUG ClassName1- methodName1- Hostname of local machine: ip-###.###.###.###/ ###.###.###.###
04:15:00,003 [scheduler-2] DEBUG ClassName1- methodName1- Hostname of local machine: ip-###.###.###.###/ ###.###.###.###

任务执行两次,每个线程间隔1毫秒。我们只有在搬到AWS弹性豆茎之后才会看到这种行为。

该应用程序运行在:64位Amazon 2014.03 v1.0.2上运行Tomcat 7 Java 7

有什么想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-09 18:13:21

我建议在您的环境中使用最新的解决方案栈“64位Amazon 2014.03 v1.0.4运行Tomcat7Java7”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25744217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档