Spring Integration with Twitter: How to Receive Tweets From Your Twitter Account
In this post, I will show you how to receive the tweets from your Twitter Account.
If you were to run this example, you might have to pick the remaining missing configuration for logger etc from my previous post as mentioned above.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);
}
}
A five-minute delay is added to the code to wait for any new tweets
References:
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)





