Bunny ist ein RabbitMQ-Client, bei dem die Benutzerfreundlichkeit im Vordergrund steht. Es ist funktionsvollständig, unterstützt alle aktuellen RabbitMQ-Funktionen und weist keine schwerwiegenden Abhängigkeiten auf.
Genau hier!
Man kann Bunny verwenden, um Ruby-Anwendungen mit anderen Anwendungen (sowohl in Ruby erstellten als auch nicht in Ruby erstellten Anwendungen) zusammenarbeiten zu lassen. Komplexität und Größe können von einfachen Arbeitswarteschlangen bis hin zu komplexen mehrstufigen Datenverarbeitungsworkflows variieren, die viele Anwendungen umfassen, die mit unterschiedlichsten Technologien erstellt wurden.
Konkrete Beispiele:
Ereignissammler, Metrik- und Analyseanwendungen können Ereignisse aggregieren, die von verschiedenen Anwendungen (Web und nicht) im Unternehmensnetzwerk erzeugt werden.
Eine Webanwendung kann Nachrichten an eine Java-App weiterleiten, die mit SMS-Zustellungsgateways arbeitet.
MMO-Spiele können das von RabbitMQ bereitgestellte flexible Routing nutzen, um Ereignisbenachrichtigungen an Spieler und Standorte weiterzuleiten.
Preisaktualisierungen von öffentlichen Märkten oder anderen Quellen können zwischen interessierten Parteien verteilt werden, von Handelssystemen bis hin zu Verkaufsstellen in einer bestimmten geografischen Region.
Inhaltsaggregatoren können Volltextsuch- und Geodatensuchindizes aktualisieren, indem sie die eigentliche Indexierungsarbeit über RabbitMQ an andere Anwendungen delegieren.
Unternehmen können ihren Kunden, Partnern oder einfach nur der Öffentlichkeit Streaming-/Push-APIs zur Verfügung stellen.
Kontinuierliche Integrationssysteme können Builds mithilfe der erweiterten Routing-Funktionen von RabbitMQ auf mehrere Maschinen mit unterschiedlichen Hardware- und Softwarekonfigurationen verteilen.
Eine Anwendung, die Updates aus einem Echtzeit-Stream überwacht (sei es Marktdaten oder ein Twitter-Stream), kann Updates an interessierte Parteien weitergeben, einschließlich Webanwendungen, die diese Informationen in Echtzeit anzeigen.
Unterstützung für moderne Bunny-Versionen
Für Umgebungen, die TLS verwenden, erwartet Bunny, dass Ruby-Installationen eine ausreichend aktuelle OpenSSL-Version verwenden, die Unterstützung für TLS 1.3 bietet .
Bunny funktioniert auf JRuby ausreichend gut, es gibt jedoch bekannte JRuby-Fehler in Versionen vor JRuby 9000, die zu einer hohen CPU-Belastung führen. JRuby-Benutzer sollten March Hare verwenden.
Bunny 1.7.x
war die letzte Version, die CRuby 1.9.3 und 1.8.7 unterstützte
Moderne Bunny-Releases zielen auf die derzeit unterstützte RabbitMQ-Release-Serie ab.
Änderungsprotokoll.
So verwenden Sie Bunny in einem mit Bundler verwalteten Projekt:
gem "bunny" , ">= 2.23.0"
So installieren Sie Bunny mit RubyGems:
gem install bunny
Unten ist ein kleiner Ausschnitt, der zeigt, wie man Nachrichten mit Bunny veröffentlicht und synchron konsumiert („Pull-API“).
Ein 15-minütiges Tutorial mit weiteren praktischen Beispielen finden Sie unter Erste Schritte mit RabbitMQ und Ruby unter Verwendung von Bunny.
require "bunny"
# Start a communication session with RabbitMQ
conn = Bunny . new
conn . start
# open a channel
ch = conn . create_channel
ch . confirm_select
# declare a queue
q = ch . queue ( "test1" )
q . subscribe ( manual_ack : true ) do | delivery_info , metadata , payload |
puts "This is the message: #{ payload } "
# acknowledge the delivery so that RabbitMQ can mark it for deletion
ch . ack ( delivery_info . delivery_tag )
end
# publish a message to the default exchange which then gets routed to this queue
q . publish ( "Hello, everybody!" )
# await confirmations from RabbitMQ, see
# https://www.rabbitmq.com/publishers.html#data-safety for details
ch . wait_for_confirms
# give the above consumer some time consume the delivery and print out the message
sleep 1
puts "Done"
ch . close
# close the connection
conn . close
Ein 15-minütiges Tutorial mit weiteren praktischen Beispielen finden Sie unter Erste Schritte mit RabbitMQ und Ruby unter Verwendung von Bunny.
Bunny-Dokumentationshandbücher finden Sie unter docs/guides
in diesem Repository:
Einige hochrelevante RabbitMQ-Dokumentationsleitfäden:
Bunny-API-Referenz.
Bunny hat eine Mailingliste. Bitte nutzen Sie es für alle Fragen, Untersuchungen und Diskussionen. GitHub-Probleme sollten für spezifische, gut verständliche und umsetzbare Betreuer und Mitwirkende verwendet werden, an denen sie arbeiten können.
Wir empfehlen Ihnen, auch der Mailingliste RabbitMQ beizutreten. Stellen Sie gerne alle Fragen, die Sie haben.
Wenn Sie einen Fehler finden, den Sie gut verstehen, eine schlechte Standardeinstellung, eine falsche oder unklare Dokumentation oder eine fehlende Funktion, melden Sie bitte ein Problem auf GitHub.
Bitte nutzen Sie Bunnys Mailingliste für Fragen, Untersuchungen und Diskussionen. GitHub-Probleme sollten für spezifische, gut verständliche und umsetzbare Betreuer und Mitwirkende verwendet werden, an denen sie arbeiten können.
Wenn Sie ein Problem melden, geben Sie bitte an, welche Bunny- und RabbitMQ-Versionen Sie verwenden, stellen Sie aktuelle RabbitMQ-Protokolldateiinhalte, vollständige Ausnahme-Stack-Traces und Schritte zur Reproduktion (oder fehlgeschlagener Testfälle) bereit.
Der andere weit verbreitete Ruby RabbitMQ-Client ist March Hare (nur JRuby). Es handelt sich um eine ausgereifte Bibliothek, die RabbitMQ 3.3.x oder höher erfordert.
Weitere Informationen zum Ausführen verschiedener Testsuiten finden Sie unter CONTRIBUTING.md.
Veröffentlicht unter der MIT-Lizenz.