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

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

The newest version!
<?xml version="1.0" encoding="UTF-8"?>
<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-5.12.0.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-cleanrun-master-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="false"
            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>

    <bean id="distributedMaster" class="uk.ac.ebi.interpro.scan.jms.master.DistributedBlackBoxMaster">
        <property name="jobs" ref="jobs"/>
        <property name="stepInstanceDAO" ref="stepInstanceDAO"/>
        <property name="databaseCleaner" ref="databaseCleaner"/>
        <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.master.submit.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="submissionCommandHeredocOpen" value="${grid.command.heredoc.open}"/>
                <property name="submissionCommandHeredocClose" value="${grid.command.heredoc.close}"/>
                <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.master.submit.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="submissionCommandHeredocOpen" value="${grid.command.heredoc.open}"/>
                <property name="submissionCommandHeredocClose" value="${grid.command.heredoc.close}"/>
                <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="hasInVmWorker" value="true"/>
        <property name="temporaryDirectoryManager" ref="tempDirectoryManager"/>
        <property name="temporaryFileDirSuffix" value="${temporary.file.directory.suffix}"/>
        <property name="temporaryDirectory" value="${temporary.file.directory}"/>
        <property name="deleteWorkingDirectoryOnCompletion" value="${delete.temporary.directory.on.completion}"/>
        <property name="statsUtil" ref="masterStatsUtil"/>
        <property name="maxConsumers" value="${master.maxconsumers}"/>
        <property name="maxMessagesOnQueuePerConsumer" value="${worker.maxunfinished.jobs}"/>
        <property name="concurrentInVmWorkerCount" value="${number.of.embedded.workers}"/>
        <property name="maxConcurrentInVmWorkerCount" value="${maxnumber.of.embedded.workers}"/>
        <property name="maxConcurrentInVmWorkerCountForWorkers" value="${worker.maxnumber.of.embedded.workers}"/>
        <property name="queueConsumerRatio" value="${master.steps.to.consumer.ratio}"/>
        <property name="localQueueJmsContainerFatMaster" ref="localQueueJmsContainerFatMaster"/>
        <property name="localQueueJmsContainerThinMaster" ref="localQueueJmsContainerThinMaster"/>
        <property name="logDir" value="${log.dir}"/>
        <property name="ftMode" value="${recover.unknown.step.state}"/>
        <property name="verboseLog" value="${verbose.log}"/>
        <property name="verboseLogLevel" value="${verbose.log.level}"/>
        <property name="printWorkerSummary" value="${print.worker.summary}"/>
        <property name="lsfMonitor" ref="lsfMonitor"/>
        <property name="gridName" value="${grid.name}"/>
        <property name="gridLimit" value="${grid.jobs.limit}"/>
        <property name="gridCheckInterval" value="${grid.check.interval.seconds}"/>
        <property name="masterCanRunBinaries" value="${master.can.run.binaries}"/>
    </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="masterControllerJmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory"/>
        <property name="destination" ref="monitorQueue"/>
        <property name="messageListener" ref="monitorQueueMessageListener"/>
    </bean>

    <bean id="monitorQueueMessageListener" class="uk.ac.ebi.interpro.scan.jms.monitoring.MonitorQueueMessageListenerImpl">
        <property name="statsUtil" ref="masterStatsUtil"/>
    </bean>

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

    <!--Configuration for the local job queue listener-->
    <bean id="localQueueJmsContainerFatMaster" 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"/>
        <property name="autoStartup" value="${master.can.run.binaries}"/>

    </bean>

    <!--Configuration for the local job queue listener as a fat client-->
    <bean id="localQueueJmsContainerThinMaster" 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="${thinmaster.number.of.embedded.workers}"/>
        <property name="maxConcurrentConsumers" value="${thinmaster.maxnumber.of.embedded.workers}"/>
        <property name="sessionTransacted" value="true"/>
        <property name="sessionAcknowledgeModeName" value="CLIENT_ACKNOWLEDGE"/>
        <property name="messageSelector" value="remote = FALSE"/>
        <property name="autoStartup" value="true"/>
    </bean>

    <!--<property name="messageSelector" value="remote = FALSE"/>-->
    <!--<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="verboseLogLevel" value="${verbose.log.level}"/>
        <property name="statsUtil" ref="masterStatsUtil"/>
    </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="masterStatsMessageListener"/>
    </bean>

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


    <bean id="masterStatsUtil" 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="masterStatsMessageListener" />
        <property name="highMemJobRequestQueue" ref="highMemJobRequestQueue"/>
        <property name="workerManagerTopicQueue" ref="workerManagerTopic"/>
        <property name="totalJobs" value="0"/>
        <property name="unfinishedJobs" value="0"/>
    </bean>


</beans>




© 2015 - 2025 Weber Informatics LLC | Privacy Policy