All Downloads are FREE. Search and download functionalities are using the official Maven repository.

spring.jms.master.production-master-context.xml Maven / Gradle / Ivy

The newest version!
<beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:amq="http://activemq.apache.org/schema/core"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

    <import resource="classpath:/spring/spring-properties-context.xml"/>
    <import resource="classpath:/spring/jobs/all-jobs-context.xml"/>
    <import resource="classpath:/spring/directoryManager/TemporaryDirectoryManager-context.xml"/>
    <import resource="classpath:/spring/jms/activemq/activemq-inVm-connection-config-context.xml"/>

    <!--TODO: This is already defined in the activemg broker context file-->
    <!--  Embedded ActiveMQ Broker - in vm connections only· -->
    <amq:broker
            id="jmsBroker"
            useJmx="false"
            persistent="true"
            useShutdownHook="false"
            start="false"
            dedicatedTaskRunner="false"
            tmpDataDirectory="${jms.broker.temp.directory}">
        <amq:plugins>
            <amq:statisticsBrokerPlugin id="stats"/>
        </amq:plugins>
        <amq:systemUsage>
            <amq:systemUsage>
                <amq:memoryUsage>
                    <amq:memoryUsage limit="1024 mb"/>
                </amq:memoryUsage>
                <amq:storeUsage>
                <amq:storeUsage limit="1 gb"/>
                </amq:storeUsage>
                <amq:tempUsage>
                <amq:tempUsage limit="100 mb"/>
                </amq:tempUsage>
            </amq:systemUsage>
        </amq:systemUsage>
        <amq:transportConnectors>
            <amq:transportConnector uri="vm://localhost"/>
        </amq:transportConnectors>
    </amq:broker>

    <!-- JMS Exception handler-->
    <bean id="jmsIOExceptionHandler" class="uk.ac.ebi.interpro.scan.jms.activemq.JMSIOExceptionHandler" />

    <bean id="master" class="uk.ac.ebi.interpro.scan.jms.master.ProductionMaster">
        <property name="jobs" ref="jobs"/>
        <property name="stepInstanceDAO" ref="productionStepInstanceDAO"/>
        <property name="projectId" value="${user.digest}"/>
        <property name="messageSender">
            <bean class="uk.ac.ebi.interpro.scan.jms.activemq.MasterMessageSenderImpl">
                <property name="workerJobRequestQueue" ref="jobRequestQueue"/>
                <property name="stepExecutionDAO" ref="stepExecutionDAO"/>
                <property name="jmsTemplate" ref="inVmJmsTemplate"/>
                <property name="normalWorkerJobRequestQueue" ref="jobRequestQueue"/>
                <property name="highmemWorkerJobRequestQueue" ref="highMemJobRequestQueue"/>
                <property name="workerManagerTopic" ref="workerManagerTopic"/>
                <property name="jmsTopicTemplate" ref="inVmJmsTopicTemplate"/>
            </bean>
        </property>
        <property name="unrecoverableErrorStrategy">
            <bean class="uk.ac.ebi.interpro.scan.jms.activemq.NonZeroExitOnUnrecoverableError"/>
        </property>
        <property name="workerRunner">
            <bean class="uk.ac.ebi.interpro.scan.jms.master.queuejumper.platforms.SubmissionWorkerRunner">
                <property name="submissionCommand" value="bsub -q production-rh7 -o worker.lsf.out -e worker.lsf.err -J i5EsJms ${worker.command}"/>
                <property name="gridCommand" value="${grid.lsf.master.command}"/>
                <property name="projectId" value="${user.digest}"/>
                <property name="i5Command" value="${worker.command}"/>
                <property name="gridJobsLimit" value="${grid.jobs.limit}"/>
                <property name="lsfMonitor" ref="lsfMonitor"/>
                <property name="gridName" value="${grid.name}"/>
                <property name="highMemory" value="false"/>
                <property name="workerStartupStrategy">
                    <bean class="uk.ac.ebi.interpro.scan.jms.master.queuejumper.platforms.UnrestrictedWorkerStartupStrategy"/>
               </property>
            </bean>
        </property>
        <property name="workerRunnerHighMemory">
            <bean class="uk.ac.ebi.interpro.scan.jms.master.queuejumper.platforms.SubmissionWorkerRunner">
                <property name="submissionCommand" value="bsub -q production-rh7 -o highmem.worker.lsf.out -e highmem.worker.lsf.err -J i5EsJms ${worker.high.memory.command}"/>
                <property name="gridCommand" value="${grid.lsf.master.high.memory.command}"/>
                <property name="projectId" value="${user.digest}"/>
                <property name="i5Command" value="${worker.high.memory.command}"/>
                <property name="highMemory" value="true"/>
                <property name="gridName" value="${grid.name}"/>
                <property name="workerStartupStrategy">
                    <bean class="uk.ac.ebi.interpro.scan.jms.master.queuejumper.platforms.UnrestrictedWorkerStartupStrategy"/>
                </property>
                <property name="gridJobsLimit" value="${grid.jobs.limit}"/>
                <property name="lsfMonitor" ref="lsfMonitor"/>
            </bean>
        </property>
        <property name="temporaryDirectoryManager" ref="tempDirectoryManager"/>
        <property name="temporaryFileDirSuffix" value="${temporary.file.directory.suffix}"/>
        <property name="statsUtil" ref="statsUtil"/>
        <property name="maxConsumers" value="${master.maxconsumers}"/>
        <property name="temporaryDirectory" value="${temporary.file.directory}"/>
    </bean>

    <bean id="portExclusionList" class="java.lang.String">
        <constructor-arg value="${tcp.port.exclusion.list}"/>
    </bean>


    <bean id="lsfMonitor" class="uk.ac.ebi.interpro.scan.jms.lsf.LSFMonitor" />

    <bean id="responseMonitorJmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory"/>
        <property name="destination" ref="jobResponseQueue"/>
        <property name="messageListener" ref="responseMonitorListener"/>
    </bean>

    <bean id="responseMonitorListener" class="uk.ac.ebi.interpro.scan.jms.master.ResponseMonitorImpl">
        <constructor-arg ref="stepExecutionDAO"/>
    </bean>

    <!--Configuration for the local job queue listener-->
    <bean id="localQueueJmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory"/>
        <property name="destination" ref="jobRequestQueue"/>
        <property name="messageListener" ref="localJobQueueListener"/>
        <property name="concurrentConsumers" value="${number.of.embedded.workers}"/>
        <property name="maxConcurrentConsumers" value="${maxnumber.of.embedded.workers}"/>
        <property name="sessionTransacted" value="true"/>
        <property name="sessionAcknowledgeModeName" value="CLIENT_ACKNOWLEDGE"/>
    </bean>

    <!--<bean id="amqEmbeddedWorker" class="uk.ac.ebi.interpro.scan.jms.activemq.WorkerListener">-->
        <!--<property name="jobResponseQueue" ref="jobResponseQueue"/>-->
        <!--<property name="jmsTemplate" ref="inVmJmsTemplate"/>-->
        <!--<property name="stepExecutor" ref="embeddedStepExecutor"/>-->
        <!---->
    <!--</bean>-->

    <!--Listens to the local job queue and performs jobs-->
    <bean id="localJobQueueListener" class="uk.ac.ebi.interpro.scan.jms.worker.LocalJobQueueListener">
        <property name="stepExecutor" ref="embeddedStepExecutor"/>
        <property name="jobResponseQueue" ref="jobResponseQueue"/>
        <property name="localJmsTemplate" ref="inVmJmsTemplate"/>
        <property name="verboseLog" value="${verbose.log}"/>
        <property name="statsUtil" ref="statsUtil"/>
    </bean>


    <bean id="embeddedStepExecutor" class="uk.ac.ebi.interpro.scan.jms.activemq.StepExecutionTransactionImpl">
        <property name="jobs" ref="jobs"/>
        <property name="jmsTemplate" ref="inVmJmsTemplate"/>
        <property name="jobResponseQueue" ref="jobResponseQueue"/>
        <property name="directoryManager" ref="tempDirectoryManager"/>
    </bean>


    <!--Configuration for the statistics listener-->
    <bean id="statsMessageListenerJmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory"/>
        <property name="destination" ref="statsQueue"/>
        <property name="concurrentConsumers" value="1"/>
        <property name="messageListener" ref="statsMessageListener"/>
    </bean>

    <bean id="statsMessageListener" class="uk.ac.ebi.interpro.scan.jms.stats.StatsMessageListener"/>


    <bean id="statsUtil" class="uk.ac.ebi.interpro.scan.jms.stats.StatsUtil">
        <property name="jmsTemplate" ref="inVmJmsTemplate"/>
        <property name="jobRequestQueue" ref="jobRequestQueue"/>
        <property name="jobResponseQueue" ref="jobResponseQueue"/>
        <property name="statsQueue" ref="statsQueue"/>
        <property name="statsMessageListener"  ref="statsMessageListener" />
        <property name="highMemJobRequestQueue" ref="highMemJobRequestQueue"/>
        <property name="workerManagerTopicQueue" ref="workerManagerTopic"/>
        <property name="totalJobs" value="0"/>
        <property name="unfinishedJobs" value="0"/>
    </bean>


    <!-- Quartz Scheduler - contains list of Quartz jobs. -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="proteinLoadTrigger"/>
                <!--<ref bean="startSpareParallelWorkerTrigger"/>-->
            </list>
        </property>
    </bean>


    <!-- Quartz job to load proteins from UniParc -->
    <bean id="proteinLoadQuartzJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="master"/>
        <property name="targetClass" value="uk.ac.ebi.interpro.scan.jms.master.ProductionMaster"/>
        <property name="targetMethod" value="createProteinLoadJob"/>
    </bean>

    <bean id="proteinLoadTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
        <property name="jobDetail" ref="proteinLoadQuartzJob"/>
         <!--Wait a while before attempting to load proteins. -->
        <property name="startDelay" value="${ebi.uniparc.protein.load.start.delay.seconds}000"/>
        <property name="repeatInterval" value="${ebi.uniparc.protein.load.repeat.interval.seconds}000"/>
    </bean>

    <!-- Quartz job to run spare parallel worker.  Currently turned on. -->
    <!--<bean id="startSpareParallelWorkerQuartzJob"-->
          <!--class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">-->
        <!--<property name="targetObject" ref="master"/>-->
        <!--<property name="targetMethod" value="startNewWorkerForQuartzJob"/>-->
    <!--</bean>-->
<!---->
    <!--<bean id="startSpareParallelWorkerTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">-->
        <!--<property name="jobDetail" ref="startSpareParallelWorkerQuartzJob"/>-->
        <!--<property name="startDelay" value="${spare.worker.start.delay.seconds}000"/>-->
        <!--<property name="repeatInterval" value="${spare.worker.repeat.interval.seconds}000"/>-->
    <!--</bean>-->
</beans>








© 2015 - 2025 Weber Informatics LLC | Privacy Policy