Spring Integration with Twitter: How to Receive Tweets From Your Twitter Account
Join the DZone community and get the full member experience.
Join For FreeIn this post, I will show you how to receive the tweets from your Twitter Account.
Spring Configuration
The Spring Configuration for receiving a Twitter update is shown below
twitter-inbound.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:int="http://www.springframework.org/schema/integration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:twitter="http://www.springframework.org/schema/integration/twitter" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/integration/twitter http://www.springframework.org/schema/integration/twitter/spring-integration-twitter.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder location="/twitter.properties" /> <context:component-scan base-package="com.skilledmonster.spring.integration.twitter" /> <int:channel id="twitterInbound" /> <int:service-activator input-channel="twitterInbound" ref="twitterMessageConsumer" /> <twitter:inbound-channel-adapter channel="twitterInbound" twitter-template="twitterTemplate"> <int:poller fixed-rate="5000" max-messages-per-poll="5" /> </twitter:inbound-channel-adapter> </beans>
The inbound-update-channel-adapter is configured with the same twitter-template to send the Twitter update message to the twitterInbound channel. A poller element is required to pull the messages from the Twitter server every 5 seconds. A maximum of 5 messages are pulled everytime the server is polled for the messages.
Service Activator
The Service Activator class is used to receive the Twitter message as shown below
package com.skilledmonster.spring.integration.twitter; import org.apache.log4j.Logger; import org.springframework.integration.Message; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; /** * Twitter Message Consumer using the Service Activator * @author Jagadeesh * */ @Component public class TwitterMessageConsumer { private static Logger LOG = Logger.getLogger(TwitterMessageConsumer.class); @ServiceActivator public void consume(Message<Tweet> message) { // get message payload Tweet tweet = message.getPayload(); // log the received tweets LOG.info("Fetched Tweet Text from @" + tweet.getFromUser()+" # " + tweet.getText() ); } }
Test Run
All that is required to run the Twitter inbound message example is to load the Spring Configuration filepackage com.skilledmonster.spring.integration.twitter; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Twitter Inbound class to pull the messages for the Twitter server * @author Jagadeesh * */ public class TwitterInbound { public static void main(String[] args) throws Exception { ApplicationContext context = new ClassPathXmlApplicationContext("/twitter-inbound.xml"); Thread.sleep(5 * 60 * 1000); } }
References:
Published at DZone with permission of Jagadeesh Motamarri, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments