5.6.4. Reading from the Message Queue
listener.cpp is identical to the listener used for the direct exchange example—it simply reads messages from the message queue. Here is the listener class for this program:
class Listener : public MessageListener{
private:
SubscriptionManager& subscriptions;
public:
Listener(SubscriptionManager& subscriptions);
virtual void received(Message& message);
};
Listener::Listener(SubscriptionManager& subs) : subscriptions(subs)
{}
void Listener::received(Message& message) {
std::cout << "Message: " << message.getData() << std::endl;
if (message.getHeaders().getString("control") == "end") {
std::cout << "Shutting down listener for " << message.getDestination()
<< std::endl;
subscriptions.cancel(message.getDestination());
}
}
And here is the main body of the program:
SubscriptionManager subscriptions(session); // Create a listener and subscribe it to the queue named "message_queue" Listener listener(subscriptions); subscriptions.subscribe(listener, "message_queue"); // Deliver messages until the subscription is cancelled // by Listener::received() subscriptions.run();