|
Page Edited :
qpid :
C++ vs. Python API Discrepancies
C++ vs. Python API Discrepancies has been edited by Jonathan Robie (Mar 09, 2009). Content:This page compares C++ and Python code samples from our examples, looking for arbitrary discrepancies in the API. I suggest that we add proposals to fix these discrepancies inline for each example. Opening and closing connections and sessionsC++
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;
Subscribing to a QueueC++LocalQueue local_queue;
SubscriptionManager subscriptions(session);
subscriptions.subscribe(local_queue, string("message_queue"));
subscriptions.run();
Pythonlocal_queue_name = "local_queue" queue = session.incoming(local_queue_name) session.message_subscribe(queue="message_queue", destination=local_queue_name) queue.start() Discrepancies
Setting Delivery Properties, Message PropertiesC++
message.getDeliveryProperties().setRoutingKey("routing_key");
Pythondelivery_props = session.delivery_properties(routing_key="routing_key") Discrepancies
SubscriptionManagerDiscrepancies
Message ListenersC++
// 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();
Python
#----- Message Receive Handler -----------------------------
class Receiver:
def __init__ (self):
self.finalReceived = False
def isFinal (self):
return self.finalReceived
def Handler (self, message):
content = message.body
session.message_accept(RangedSet(message.id))
print content
if content == "That's all, folks!":
self.finalReceived = True
# Call message_subscribe() to tell the broker to deliver messages
# from the AMQP queue to this local client queue. The broker will
# start delivering messages as soon as message_subscribe() is called.
session.message_subscribe(queue="message_queue", destination=local_queue_name)
queue.start()
# Register a message listener with the queue
receiver = Receiver()
queue.listen (receiver.Handler)
while not receiver.isFinal() :
sleep (1)
Discrepancies
Synchronous / Asynchronous ModesDiscrepancies
Discrepancies### TOPIC ####C++code Pythoncode Discrepancies
|
Powered by
Atlassian Confluence
(Version: 2.2.9 Build:#527 Sep 07, 2006)
-
Bug/feature request
Unsubscribe or edit your notifications preferences
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]
Unsubscribe or edit your notifications preferences
