Twitter Connector Service Example

This example shows you how to configure HornetQ to use the Twitter Connector Service.

HornetQ supports 2 types of Twitter connector, incoming and outgoing. Incoming connector consumes from twitter and forwards to a configurable address. Outgoing connector consumes from a configurable address and forwards to twitter.

In this example, incoming connector and outgoing connector is related to same twitter account. So if you send a message to an outgoing address, outgoing connector forwards it to twitter, and then incoming connector consumes it and forwards to incoming address.

Example step-by-step

To run the server, simply type mvn-Dtwitter.consumerKey=consumer -Dtwitter.consumerSecret=secret -Dtwitter.accessToken=token -Dtwitter.accessTokenSecret=secret verify from this directory but replacing the system properties with those of the twitter account you want to use. Then run the example by using the command mvn -Pexample package

  1. First we need to create a ClientSessionFactory with Netty transport configuration
  2.            csf = HornetQClient.createClientSessionFactory(new TransportConfiguration(NettyConnectorFactory.class.getName()));
            
  3. We create a core session with auto-commit mode
  4.            session = csf.createSession(true,true);
            
  5. We Create a core producer for queue.outgoingQueue
  6.            ClientProducer cp = session.createProducer(OUTGOING_QUEUE);
            
  7. We create a core consumer for queue.incomingQueue
  8.            ClientConsumer cc = session.createConsumer(INCOMING_QUEUE);
            
  9. We create a core message that we are going to send
  10.            ClientMessage cm = session.createMessage(org.apache.activemq.api.core.Message.TEXT_TYPE,true);
    String testMessage = System.currentTimeMillis() + ": twitter connector test example";
    cm.getBodyBuffer().writeString(testMessage);
            
  11. We send the message to queue.outgoingQueue
  12.           cp.send(cm);
           
  13. We start the session
  14.            session.start();
            
  15. We will receive a message from queue.incomingQueue. Outgoing connector forwards a message(we sent before) to twitter immediately. Since incoming connector consumes from twitter and forwards to queue.incomingQueue every 60 seconds, It will be received in 60+x seconds.
  16.            ClientMessage received = cc.receive(70 * 1000);
    received.acknowledge();
    String receivedText = received.getBodyBuffer().readString();
            
  17. And finally, remember to close core session and ClientSessionFactory in a finally block.
  18.            finally
    {
        if(session != null)
        {
           session.close();
        }
        if(csf != null)
        {
           csf.close();
        }
    }