170 lines
7.6 KiB
XML
170 lines
7.6 KiB
XML
<beans xmlns="http://www.springframework.org/schema/beans"
|
|
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-3.1.xsd
|
|
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
|
|
|
|
<bean id="smartInitQueue" class="com.raytheon.edex.plugin.gfe.smartinit.SmartInitQueue"/>
|
|
<bean id="jms-smartinit" class="org.apache.camel.component.jms.JmsComponent">
|
|
<constructor-arg ref="jmsSmartInitConfig" />
|
|
<property name="taskExecutor" ref="smartInitThreadPool" />
|
|
</bean>
|
|
<bean id="jmsSmartInitConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
|
factory-bean="jmsConfig" factory-method="copy" />
|
|
<bean id="smartInitThreadPool"
|
|
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
|
<property name="corePoolSize" value="${smartinit.threadpoolsize}" />
|
|
<property name="maxPoolSize" value="${smartinit.threadpoolsize}" />
|
|
</bean>
|
|
<bean id="smartInitSrvCfg" class="com.raytheon.edex.plugin.gfe.smartinit.SmartInitSrvConfig">
|
|
<property name="executor" ref="smartInitThreadPool"/>
|
|
<property name="threads" value="${smartinit.threads}"/>
|
|
<property name="pendingInitMinTimeMillis" value="180000"/>
|
|
<property name="runningInitTimeOutMillis" value="300000"/>
|
|
<property name="threadSleepInterval" value="60000"/>
|
|
</bean>
|
|
|
|
<bean depends-on="gfeDbRegistered, gfeSitesActive" id="smartInitSrv" class="com.raytheon.edex.plugin.gfe.smartinit.SmartInitSrv">
|
|
<constructor-arg ref="smartInitSrvCfg" />
|
|
</bean>
|
|
|
|
<bean id="spcWatch" class="com.raytheon.edex.plugin.gfe.spc.SPCWatchSrv" />
|
|
<bean id="tpcWatch" class="com.raytheon.edex.plugin.gfe.tpc.TPCWatchSrv" />
|
|
<bean id="wclWatch" class="com.raytheon.edex.plugin.gfe.wcl.WCLWatchSrv" />
|
|
|
|
<bean id="gfeIngestFilter" class="com.raytheon.edex.plugin.gfe.server.notify.GfeIngestNotificationFilter">
|
|
<property name="smartInitQueue" ref="smartInitQueue"/>
|
|
</bean>
|
|
<bean id="vtecChangeListener" class="com.raytheon.edex.plugin.gfe.server.notify.VTECTableChangeListener"/>
|
|
|
|
<camelContext id="gfe-camel-spring"
|
|
xmlns="http://camel.apache.org/schema/spring"
|
|
errorHandlerRef="errorHandler">
|
|
<route id="SPCWatch">
|
|
<from uri="jms-generic:queue:edex.spcWatch?destinationResolver=#qpidDurableResolver" />
|
|
<doTry>
|
|
<bean ref="spcWatch" method="handleSpcWatch" />
|
|
<doCatch>
|
|
<exception>java.lang.Throwable</exception>
|
|
<to uri="log:gfeWatch?level=ERROR"/>
|
|
</doCatch>
|
|
</doTry>
|
|
</route>
|
|
|
|
<route id="TPCWatch">
|
|
<from uri="jms-generic:queue:edex.tpcWatch?destinationResolver=#qpidDurableResolver" />
|
|
<doTry>
|
|
<bean ref="tpcWatch" method="handleTpcWatch" />
|
|
<doCatch>
|
|
<exception>java.lang.Throwable</exception>
|
|
<to uri="log:gfeWatch?level=ERROR"/>
|
|
</doCatch>
|
|
</doTry>
|
|
</route>
|
|
|
|
<route id="WCLWatch">
|
|
<from uri="direct-vm:wclWatch" />
|
|
<bean ref="wclWatch" method="handleWclWatch" />
|
|
</route>
|
|
|
|
<route id="smartInitTrigger">
|
|
<from uri="timer://smartInitTimer?fixedRate=true&period=30000" />
|
|
<bean ref="smartInitQueue" method="fireSmartInit" />
|
|
</route>
|
|
</camelContext>
|
|
|
|
<camelContext id="clusteredGfeIngestRoutes"
|
|
xmlns="http://camel.apache.org/schema/spring"
|
|
errorHandlerRef="errorHandler" autoStartup="false">
|
|
|
|
<!-- gfeIngestNotification must be a singleton and has 4 threads to read due to throughput of messages during model run times -->
|
|
<route id="gfeIngestNotification">
|
|
<from uri="jms-generic:queue:gfeDataURINotification?destinationResolver=#qpidDurableResolver&concurrentConsumers=4" />
|
|
<doTry>
|
|
<bean ref="serializationUtil" method="transformFromThrift" />
|
|
<bean ref="gfeIngestFilter" method="filterDataURINotifications" />
|
|
|
|
<doCatch>
|
|
<exception>java.lang.Throwable</exception>
|
|
<to uri="log:gfeIngestFilter?level=ERROR"/>
|
|
</doCatch>
|
|
</doTry>
|
|
</route>
|
|
|
|
<!-- Smart Init Routes -->
|
|
<!-- main route now handled through the gfeIngestNotification -->
|
|
<route id="manualSmartInit">
|
|
<from uri="jms-smartinit:queue:manualSmartInit" />
|
|
<doTry>
|
|
<bean ref="smartInitQueue" method="addManualInit" />
|
|
<doCatch>
|
|
<exception>java.lang.Throwable</exception>
|
|
<to uri="log:smartinit?level=ERROR"/>
|
|
</doCatch>
|
|
</doTry>
|
|
</route>
|
|
|
|
<route id="gfeVtecChangeNotification">
|
|
<from uri="jms-generic:topic:edex.alerts.vtec"/>
|
|
<doTry>
|
|
<bean ref="serializationUtil" method="transformFromThrift" />
|
|
<bean ref="vtecChangeListener" method="handleNotification" />
|
|
<doCatch>
|
|
<exception>java.lang.Throwable</exception>
|
|
<to uri="log:vtecChangeListener?level=ERROR"/>
|
|
</doCatch>
|
|
</doTry>
|
|
</route>
|
|
|
|
<!-- Convert the topic into a queue so only one consumer gets each message and we still have competing consumers. -->
|
|
<route id="gfeDataURINotificationQueueRoute">
|
|
<from uri="jms-gfe-notify:topic:edex.alerts" />
|
|
<doTry>
|
|
<to uri="jms-generic:queue:gfeDataURINotification"/>
|
|
<doCatch>
|
|
<exception>java.lang.Throwable</exception>
|
|
<to
|
|
uri="log:gfeIngestFilter?level=ERROR" />
|
|
</doCatch>
|
|
</doTry>
|
|
</route>
|
|
</camelContext>
|
|
|
|
<!-- Beans to define a custom jms connection which will allow a durable subscription -->
|
|
<bean id="gfeNotifyConnectionFactory" class="org.apache.qpid.client.AMQConnectionFactory">
|
|
<constructor-arg type="java.lang.String" value="amqp://guest:guest@gfeNotify/edex?brokerlist='tcp://${BROKER_ADDR}?retries='9999'&connecttimeout='5000'&connectdelay='5000''&maxprefetch='0'&sync_publish='all'&sync_ack='true'"/>
|
|
</bean>
|
|
|
|
<bean id="gfeNotifyPooledConnectionFactory" class="com.raytheon.uf.common.jms.JmsPooledConnectionFactory">
|
|
<constructor-arg ref="gfeNotifyConnectionFactory"/>
|
|
<property name="provider" value="QPID"/>
|
|
<property name="reconnectInterval" value="5000"/>
|
|
<!-- After connection has been closed by thread keep it allocated for another 90 seconds in case thread needs it again -->
|
|
<property name="connectionHoldTime" value="90000"/>
|
|
<!-- Any resource that has been available in the pool for more than 1 minute will be closed -->
|
|
<property name="resourceRetention" value="60000"/>
|
|
<property name="maxSpareConnections" value="1"/>
|
|
</bean>
|
|
|
|
<bean id="gfeNotifyJmsConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
|
factory-bean="jmsConfig" factory-method="copy">
|
|
<property name="listenerConnectionFactory" ref="gfeNotifyPooledConnectionFactory" />
|
|
<property name="templateConnectionFactory" ref="gfeNotifyPooledConnectionFactory" />
|
|
</bean>
|
|
|
|
<bean id="gfeNotifyThreadPool"
|
|
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
|
<property name="corePoolSize" value="1" />
|
|
<property name="maxPoolSize" value="1" />
|
|
</bean>
|
|
|
|
<bean id="jms-gfe-notify" class="org.apache.camel.component.jms.JmsComponent">
|
|
<constructor-arg ref="gfeNotifyJmsConfig" />
|
|
<property name="taskExecutor" ref="gfeNotifyThreadPool" />
|
|
</bean>
|
|
<!-- end of custom JMS beans -->
|
|
|
|
<bean factory-bean="clusteredCamelContextMgr"
|
|
factory-method="register">
|
|
<constructor-arg ref="clusteredGfeIngestRoutes" />
|
|
</bean>
|
|
</beans>
|