Consider the Spring Integration application that I had outlined in my previous Blog entry:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration" xmlns:int-http="http://www.springframework.org/schema/integration/http" xsi:schemaLocation="http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http.xsd"> <int:inbound-channel-adapter channel="quakeinfotrigger.channel" expression="''"> <int:poller fixed-delay="60000"></int:poller> </int:inbound-channel-adapter> <int:channel id="quakeinfo.channel"> <int:queue capacity="10"/> </int:channel> <int:channel id="quakeinfotrigger.channel"></int:channel> <int-http:outbound-gateway id="quakerHttpGateway" request-channel="quakeinfotrigger.channel" url="http://earthquake.usgs.gov/earthquakes/feed/geojson/all/hour" http-method="GET" expected-response-type="java.lang.String" charset="UTF-8" reply-timeout="5000" reply-channel="quakeinfo.channel"> </int-http:outbound-gateway> <int:logging-channel-adapter id="messageLogger" log-full-message="true" channel="quakeinfo.channel" level="ERROR"> <int:poller fixed-delay="5000" ></int:poller> </int:logging-channel-adapter> </beans>
The above Spring Integration flow polls a http endpoint every minute and prints the contents to System out. Now to write a standalone application out of this, is as simple as the following:
package standalone; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:/httpgateway.xml"); applicationContext.registerShutdownHook(); } }
Initialize the ApplicationContext, and register a shutdown hook for orderly shutdown of the context, that's it! Since the sample flow above spawns threads to poll an http endpoint the application stays active with just the above code.
This sample is available at the following github repo:
https://github.com/bijukunjummen/si-standalone-sample
No comments:
Post a Comment