Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 
Anchor
C++
C++
C++

Code Block
languagecpp
titleConnecting to RabbitMQMain Function
int main(int argc, const char *argv[])
{   
    // need an ip
    if (argc != 2)#include <amqpcpp.h>

namespace CPPExample
{
  class RabbitMQConnectionHandler : public AMQP::ConnectionHandler {
      /**
    {
  *  Method that is called by// thereport AMQPerror
 library every time it has data
  std::cerr << "usage: " *<< argv[0] available<< that" should<ip>" be sent to RabbitMQ. 
<< std::endl;
        
 *  @param  connection  pointer to// thedone
 main connection object  
   return -1;
  *  @param}
  data  else
    {
  memory buffer with the data that should// be sent to RabbitMQcreate connection
      *  @param  sizeMyConnection connection(argv[1]);


        // size ofstart the buffer
main event loop
    */
     virtual void onData(AMQP::Connection *connection, const char *data, size_t size)
     {
 Event::MainLoop::instance()->run();


        // @todo done
        return //0;
  Add your own implementation, for example by doing a call to the
         //  send() system call. But be aware that the send() call may not
         //  send all data at once, so you also need to take care of buffering
         //  the bytes that could not immediately be sent, and try to send 
         //  them again when the socket becomes writable again
     }

      /**
      *  Method that is called by the AMQP library when the login attempt 
      *  succeeded. After this method has been called, the connection is ready 
      *  to use.
      *  @param  connection      The connection that can now be used
      */
      virtual void onConnected(Connection *connection)
      {
         // @todo
         //  add your own implementation, for example by creating a channel 
         //  instance, and start publishing or consuming
      }

      /**
      *  Method that is called by the AMQP library when a fatal error occurs
      *  on the connection, for example because data received from RabbitMQ
      *  could not be recognized.
      *  @param  connection      The connection on which the error occured
      *  @param  message         A human readable error message
      */
      virtual void onError(Connection *connection, const std::string &message)
      {
        // @todo
        //  add your own implementation, for example by reporting the error
        //  to the user of your program, log the error, and destruct the 
        //  connection object because it is no longer in a usable state
      }
  };

}
Code Block
languagecpp
titleReceiver
namespace CPPExample 
{
  /**
   *  Parse data that was recevied from RabbitMQ
   *  
   *  Every time that data comes in from RabbitMQ, you should call this method to parse
   *  the incoming data, and let it handle by the AMQP-CPP library. This method returns the number
   *  of bytes that were processed.
   *
   *  If not all bytes could be processed because it only contained a partial frame, you should
   *  call this same method later on when more data is available. The AMQP-CPP library does not do
   *  any buffering, so it is up to the caller to ensure that the old data is also passed in that
   *  later call.
   *
   *  @param  buffer      buffer to decode
   *  @param  size        size of the buffer to decode
   *  @return             number of bytes that were processed
   */
  size_t parse(char *buffer, size_t size)
  {
     return _implementation.parse(buffer, size);
  }
}
Code Block
languagecpp
titleInstantiating a Connection Handler
// create an instance of your own connection handler
RabbitMQConnectionHandler myHandler;

// create a AMQP connection object
AMQP::Connection connection(&myHandler, Login("guest","guest"), "/");

// and create a channel
AMQP::Channel channel(&connection);

// use the channel object to call the AMQP method you like
channel.declareExchange("my-exchange", AMQP::fanout);
channel.declareQueue("my-queue");
channel.bindQueue("my-exchange", "my-queue");

...

languagecpp
titleChannel Handler
 }
}

 

 

 

...

Anchor
Python
Python
Python

Code Block
themeEmacs
languagepy
titleInstantiating the logger and starting the extractor
def main():
 global logger

  # name of receiver
  receiver='ExamplePythonExtractor'

  # configure the logging system
  logging.basicConfig(format="%(asctime)-15s %(name)-10s %(levelname)-7s : %(message)s", level=logging.WARN)
  logger = logging.getLogger(receiver)
  logger.setLevel(logging.DEBUG)
 
  if len(sys.argv) != 4:
    logger.info("Input RabbitMQ username, followed by RabbitMQ password and Medici REST API key.")
    sys.exit()
 
  global playserverKey
  playserverKey = sys.argv[3]
  global exchange_name
  exchange_name = sys.argv[4]

...