title: Connect C++ to ActiveMQ broker
body: <p>I'm trying develop aplication with comunication with JMS between C++ and Java.</p>
  
  <p>I have a "server" with a broker in Java and i would like conect a c++ publisher/listner</p>
  
  <p><em><strong>How to i do this?</em></strong></p>
  
  <p>My classes im Java are:</p>
  
  <p><strong>"SERVER":</strong>    </p>
  
  <pre><code>public class Queue {
  
  private static ActiveMQConnectionFactory connectionFactory;
  private static Destination destination;
  private static boolean transacted = false;
  private static Session session;
  private static  Connection connection;
  
  public static void main(String[] args) throws Exception {
      BrokerService broker = new BrokerService();
      broker.setUseJmx(true);
      broker.addConnector("tcp://localhost:61616");
      broker.start();
      Producer p=new Producer();
      Consumer c= new Consumer();
      connectionFactory = new ActiveMQConnectionFactory(
              ActiveMQConnection.DEFAULT_USER,
              ActiveMQConnection.DEFAULT_PASSWORD,
              ActiveMQConnection.DEFAULT_BROKER_URL);
      connection = connectionFactory.createConnection();
      connection.start();
      session = connection
              .createSession(transacted, Session.AUTO_ACKNOWLEDGE);
      destination = session.createQueue("queue"); 
      c.createConsumerAndReceiveAMessage(connection, connectionFactory,session,destination );
      p.createProducerAndSendAMessage(destination,session);
      broker.stop();  
  }   
  </code></pre>
  
  <p><strong>PRODUCER</strong></p>
  
  <pre><code>public class Producer {
  void createProducerAndSendAMessage(Destination destination,
          Session session) throws JMSException {
  
      MessageProducer producer = session.createProducer(destination);
      producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
      Scanner sc=new Scanner(System.in);
      String msg;
      while(!(msg=sc.nextLine()).equals("exit") ){
          TextMessage message = session.createTextMessage(msg);
          System.out.println("Sending message " + message.getText());
          producer.send(message);
      }
  }
  </code></pre>
  
  <p><strong>CONSUMER:</strong></p>
  
  <pre><code>public class Consumer {
  public void createConsumerAndReceiveAMessage(Connection connection,
          ActiveMQConnectionFactory connectionFactory, Session session,
          Destination destination) throws JMSException, InterruptedException {
  
      connection = connectionFactory.createConnection();
      connection.start();
      MessageConsumer consumer = session.createConsumer(destination);
      MyConsumer myConsumer = new MyConsumer();
      connection.setExceptionListener(myConsumer);
      consumer.setMessageListener(myConsumer);
  }
  private static class MyConsumer implements MessageListener,
          ExceptionListener {
      synchronized public void onException(JMSException ex) {
          System.out.println("JMS Exception occured.  Shutting down client.");
          System.exit(1);
      }
      public void onMessage(Message message) {
          if (message instanceof TextMessage) {
              TextMessage textMessage = (TextMessage) message;
              try {
                  System.out.println("Received message "
                          + textMessage.getText());
              } catch (JMSException ex) {
                  System.out.println("Error reading message " + ex);
              }
          } else {
              System.out.println("Received " + message);
          }
      }
  }
  </code></pre>
  
  <p>Regards</p>