activemq-artemis/examples/core/twitter-connector
Andy Taylor 8ecd255f98 ACTIVEMQ6-1 - Initial HornetQ Donation Commit
https://issues.apache.org/jira/browse/ACTIVEMQ6-1

This is the initial donation of the HornetQ codebase as per document http://incubator.apache.org/ip-clearance/hornetq.html
2014-11-10 10:31:25 -06:00
..
src/main ACTIVEMQ6-1 - Initial HornetQ Donation Commit 2014-11-10 10:31:25 -06:00
pom.xml ACTIVEMQ6-1 - Initial HornetQ Donation Commit 2014-11-10 10:31:25 -06:00
readme.html ACTIVEMQ6-1 - Initial HornetQ Donation Commit 2014-11-10 10:31:25 -06:00

readme.html

<html>
  <head>
    <title>HornetQ Twitter Connector Service Example</title>
    <link rel="stylesheet" type="text/css" href="../../common/common.css" />
    <link rel="stylesheet" type="text/css" href="../../common/prettify.css" />
    <script type="text/javascript" src="../../common/prettify.js"></script>
  </head>
  <body onload="prettyPrint()">
     <h1>Twitter Connector Service Example</h1>

     <p>This example shows you how to configure HornetQ to use the Twitter Connector Service.</p>
     
     <p>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.
     </p>
     
     <p>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.</p>
     
     <h2>Example step-by-step</h2>
     <p><i>To run the server, simply type <code>mvn-Dtwitter.consumerKey=consumer -Dtwitter.consumerSecret=secret -Dtwitter.accessToken=token -Dtwitter.accessTokenSecret=secret verify</code>
         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 <code>mvn -Pexample package</code></p>

     
     <ol>
        <li>First we need to create a ClientSessionFactory with Netty transport configuration</li>
        <pre class="prettyprint">
           <code>csf = HornetQClient.createClientSessionFactory(new TransportConfiguration(NettyConnectorFactory.class.getName()));</code>
        </pre>

        <li>We create a core session with auto-commit mode</li>
        <pre class="prettyprint">
           <code>session = csf.createSession(true,true);</code>
        </pre>

        <li>We Create a core producer for queue.outgoingQueue</li>
        <pre class="prettyprint">
           <code>ClientProducer cp = session.createProducer(OUTGOING_QUEUE);</code>
        </pre>

        <li>We create a core consumer for queue.incomingQueue</li>
        <pre class="prettyprint">
           <code>ClientConsumer cc = session.createConsumer(INCOMING_QUEUE);</code>
        </pre>

        <li>We create a core message that we are going to send</li>
        <pre class="prettyprint">
           <code>ClientMessage cm = session.createMessage(org.hornetq.api.core.Message.TEXT_TYPE,true);
String testMessage = System.currentTimeMillis() + ": twitter connector test example";
cm.getBodyBuffer().writeString(testMessage);</code>
        </pre>

        <li>We send the message to queue.outgoingQueue</li>
        <pre class="prettyprint">
          <code>cp.send(cm);</code>
       </pre>

        <li>We start the session</li>
        <pre class="prettyprint">
           <code>session.start();</code>
        </pre>

        <li>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.</li>
        <pre class="prettyprint">
           <code>ClientMessage received = cc.receive(70 * 1000);
received.acknowledge();
String receivedText = received.getBodyBuffer().readString();</code>
        </pre>

        <li>And finally, remember to close core session and ClientSessionFactory in a <code>finally</code> block.</li>

        <pre class="prettyprint">
           <code>finally
{
    if(session != null)
    {
       session.close();
    }
    if(csf != null)
    {
       csf.close();
    }
}</code>
        </pre>



     </ol>
  </body>
</html>