2012-08-16 7 views
21

Ich habe versucht, herauszufinden, welche Form der Verbindung ich verwenden sollte, wenn Pika verwenden, habe ich zwei Alternativen, soweit ich verstehe.Welche Form der Verbindung mit Pika zu verwenden

Entweder die BlockingConnection oder die SelectConnection, aber ich bin nicht wirklich sicher über die Unterschiede zwischen diesen beiden (also das, was die BlockingConnection blockiert? Und mehr)

Die Dokumentation für pika sagt, dass SelectConnection der bevorzugte Weg ist Verbindung zu Hase, da es "mehrere Ereignisbenachrichtigungsmethoden einschließlich Auswahl, Epoll, Kqueue und Poll" bietet.

Also frage ich mich, was sind die Auswirkungen dieser zwei verschiedenen Arten von Verbindungen?

PS: Ich weiß, ich sollte keinen Titel in den Titel setzen, aber in diesem Fall denke ich, dass es hilft, die Frage zu klären.

Antwort

11

Die SelectConnection ist nützlich, wenn Ihre Anwendungsarchitektur von einem asynchronen Design profitieren kann, z. etwas anderes tun, während der RabbitMQ IO abgeschlossen ist (z. B. Wechsel zu einem anderen IO usw.). Dieser Verbindungstyp verwendet Rückrufe, um anzuzeigen, wann Funktionen zurückkehren. Zum Beispiel können Sie Rückrufe für

on_connected erklären, on_channel_open, on_exchange_declared, on_queue_declared usw.

... Operationen durchzuführen, wenn diese Ereignisse ausgelöst werden.

Der Vorteil ist besonders gut, wenn Ihr RabbitMQ-Server (oder die Verbindung zu diesem Server) langsam oder überlastet ist.

BlockingConnection auf der Hand ist nur das - es blockiert, bis die aufgerufene Funktion zurückkehrt. Daher blockiert es den Ausführungs-Thread, bis zum Beispiel connected oder channel_open oder exchange_declared oder queue_declared zurückgegeben werden. Das heißt, es ist oft einfacher, diese serialisierte Logik als die asynchrone SelectConnection-Logik zu programmieren. Für einfache Apps mit responsiven RabbitMQ-Servern funktionieren diese auch OK IMO.

Ich nehme an, Sie haben die Pika-Dokumentation bereits http://pika.github.com/connecting.html gelesen, wenn nicht, dann ist dies eine absolut wichtige Information, bevor Sie Pika verwenden!

Prost!

Verwandte Themen