Bunny est un client RabbitMQ axé sur la facilité d'utilisation. Il est doté de fonctionnalités complètes, prend en charge toutes les fonctionnalités récentes de RabbitMQ et n'a aucune dépendance lourde.
Juste ici !
On peut utiliser Bunny pour faire interagir les applications Ruby avec d'autres applications (construites en Ruby ou non). La complexité et la taille peuvent varier de simples files d'attente de travail à des flux de travail complexes de traitement de données en plusieurs étapes qui impliquent de nombreuses applications construites avec toutes sortes de technologies.
Exemples spécifiques :
Les collecteurs d'événements, les applications de métriques et d'analyse peuvent regrouper les événements produits par diverses applications (Web et non) du réseau de l'entreprise.
Une application Web peut acheminer les messages vers une application Java qui fonctionne avec les passerelles de livraison SMS.
Les jeux MMO peuvent utiliser le routage flexible fourni par RabbitMQ pour propager les notifications d'événements aux joueurs et aux emplacements.
Les mises à jour des prix provenant des marchés publics ou d'autres sources peuvent être distribuées entre les parties intéressées, des systèmes commerciaux aux points de vente dans une région géographique spécifique.
Les agrégateurs de contenu peuvent mettre à jour les index de recherche en texte intégral et de recherche géospatiale en déléguant le travail d'indexation réel à d'autres applications via RabbitMQ.
Les entreprises peuvent fournir des API de streaming/push à leurs clients, partenaires ou simplement au grand public.
Les systèmes d'intégration continue peuvent distribuer des builds entre plusieurs machines avec diverses configurations matérielles et logicielles à l'aide des fonctionnalités de routage avancées de RabbitMQ.
Une application qui surveille les mises à jour à partir d'un flux en temps réel (qu'il s'agisse de données commerciales ou d'un flux Twitter) peut propager les mises à jour aux parties intéressées, y compris les applications Web qui affichent ces informations en temps réel.
Prise en charge des versions modernes de Bunny
Pour les environnements qui utilisent TLS, Bunny s'attend à ce que les installations Ruby utilisent une version OpenSSL suffisamment récente qui inclut la prise en charge de TLS 1.3 .
Bunny fonctionne suffisamment bien sur JRuby, mais il existe des bogues JRuby connus dans les versions antérieures à JRuby 9000 qui provoquent une consommation élevée du processeur. Les utilisateurs de JRuby devraient utiliser March Hare.
Bunny 1.7.x
était la dernière version à prendre en charge CRuby 1.9.3 et 1.8.7
Les versions de Modern Bunny ciblent la série de versions RabbitMQ actuellement prise en charge.
Journal des modifications.
Pour utiliser Bunny dans un projet géré avec Bundler :
gem "bunny" , ">= 2.23.0"
Pour installer Bunny avec RubyGems :
gem install bunny
Vous trouverez ci-dessous un petit extrait qui montre comment publier et consommer de manière synchrone (« pull API ») des messages avec Bunny.
Pour un didacticiel de 15 minutes utilisant des exemples plus pratiques, consultez Premiers pas avec RabbitMQ et Ruby à l'aide de 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
Pour un didacticiel de 15 minutes utilisant des exemples plus pratiques, consultez Premiers pas avec RabbitMQ et Ruby à l'aide de Bunny.
Les guides de documentation de Bunny se trouvent sous docs/guides
dans ce référentiel :
Quelques guides de documentation RabbitMQ très pertinents :
Référence de l'API Bunny.
Bunny a une liste de diffusion. Veuillez l'utiliser pour toutes les questions, enquêtes et discussions. Les problèmes GitHub doivent être utilisés pour des tâches spécifiques, bien comprises et exploitables sur lesquelles les responsables et les contributeurs peuvent travailler.
Nous vous encourageons également à rejoindre la liste de diffusion RabbitMQ. N'hésitez pas à poser toutes les questions que vous pourriez avoir.
Si vous trouvez un bogue que vous comprenez bien, une mauvaise valeur par défaut, une documentation incorrecte ou peu claire, ou une fonctionnalité manquante, veuillez signaler un problème sur GitHub.
Veuillez utiliser la liste de diffusion de Bunny pour les questions, les enquêtes et les discussions. Les problèmes GitHub doivent être utilisés pour des tâches spécifiques, bien comprises et exploitables sur lesquelles les responsables et les contributeurs peuvent travailler.
Lorsque vous signalez un problème, veuillez spécifier les versions de Bunny et RabbitMQ que vous utilisez, fournir le contenu récent du fichier journal RabbitMQ, les traces complètes de la pile d'exceptions et les étapes à reproduire (ou les cas de test ayant échoué).
L'autre client Ruby RabbitMQ largement utilisé est March Hare (JRuby uniquement). Il s'agit d'une bibliothèque mature qui nécessite RabbitMQ 3.3.x ou version ultérieure.
Voir CONTRIBUTING.md pour plus d'informations sur l'exécution de diverses suites de tests.
Publié sous licence MIT.