/* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ // This header file is just for doxygen documentation purposes. /** \mainpage Qpid C++ API Reference * *
\ref clientapi
Includes and Namespaces
*\#include* \#include * \#include * \#include * * * using namespace qpid::client; * using namespace qpid::framing;
Opening and closing connections and sessions
*Connection connection; * try { * connection.open(host, port); * Session session = connection.newSession(); * ... * connection.close(); * return 0; * } catch(const std::exception& error) { * std::cout << error.what() << std::endl; * } * return 1;* * *
Declaring and binding queues:
* *session.queueDeclare(arg::queue="message_queue"); * session.exchangeBind(arg::exchange="amq.direct", arg::queue="message_queue", arg::bindingKey="routing_key");
Sending a message:
* *message.getDeliveryProperties().setRoutingKey("routing_key"); * message.setData("Hi, Mom!"); * session.messageTransfer(arg::content=message, arg::destination="amq.direct");
Sending a message (asynchronous):
* *##include* async(session).messageTransfer(arg::content=message, arg::destination="amq.direct"); * ... * session.sync();
Replying to a message:
*Message request, response; * ... * if (request.getMessageProperties().hasReplyTo()) { * string routingKey = request.getMessageProperties().getReplyTo().getRoutingKey(); * string exchange = request.getMessageProperties().getReplyTo().getExchange(); * response.getDeliveryProperties().setRoutingKey(routingKey); * messageTransfer(arg::content=response, arg::destination=exchange); * } *
A message listener:
* *class Listener : public MessageListener{ * private: * SubscriptionManager& subscriptions; * public: * Listener(SubscriptionManager& subscriptions); * virtual void received(Message& message); * }; * * void Listener::received(Message& message) { * std::cout << "Message: " << message.getData() << std::endl; * if (endCondition(message)) { * subscriptions.cancel(message.getDestination()); * } * }
Using a message listener with a subscription manager:
* *SubscriptionManager subscriptions(session); * * Listener listener(subscriptions); * subscriptions.subscribe(listener, "message_queue"); * subscriptions.run();
Using a LocalQueue with a subscription manager
* *SubscriptionManager subscriptions(session); * * LocalQueue local_queue; * subscriptions.subscribe(local_queue, string("message_queue")); * * Message message; * for (int i=0; i<10; i++) { * local_queue.get(message, 10000); * std::cout << message.getData() << std::endl; * }