Bunny es un cliente RabbitMQ que se centra en la facilidad de uso. Tiene funciones completas, admite todas las funciones recientes de RabbitMQ y no tiene dependencias pesadas.
¡Aquí mismo!
Se puede utilizar Bunny para hacer que las aplicaciones Ruby interoperen con otras aplicaciones (tanto integradas en Ruby como no). La complejidad y el tamaño pueden variar desde simples colas de trabajo hasta complejos flujos de trabajo de procesamiento de datos de múltiples etapas que involucran muchas aplicaciones creadas con todo tipo de tecnologías.
Ejemplos específicos:
Las aplicaciones de recopilación de eventos, métricas y análisis pueden agregar eventos producidos por varias aplicaciones (web y no) en la red de la empresa.
Una aplicación web puede enrutar mensajes a una aplicación Java que funcione con pasarelas de entrega de SMS.
Los juegos MMO pueden utilizar el enrutamiento flexible que proporciona RabbitMQ para propagar notificaciones de eventos a los jugadores y las ubicaciones.
Las actualizaciones de precios de los mercados públicos u otras fuentes pueden distribuirse entre las partes interesadas, desde los sistemas comerciales hasta los puntos de venta en una región geográfica específica.
Los agregadores de contenido pueden actualizar los índices de búsqueda de texto completo y de búsqueda geoespacial delegando el trabajo de indexación real a otras aplicaciones a través de RabbitMQ.
Las empresas pueden proporcionar API de streaming/push a sus clientes, socios o simplemente al público en general.
Los sistemas de integración continua pueden distribuir compilaciones entre varias máquinas con diversas configuraciones de hardware y software utilizando funciones de enrutamiento avanzadas de RabbitMQ.
Una aplicación que observa las actualizaciones de un flujo en tiempo real (ya sean datos de mercados o un flujo de Twitter) puede propagar actualizaciones a las partes interesadas, incluidas las aplicaciones web que muestran esa información en tiempo real.
Soporte para versiones modernas de Bunny
Para entornos que usan TLS, Bunny espera que las instalaciones de Ruby utilicen una versión de OpenSSL lo suficientemente reciente que incluya soporte para TLS 1.3 .
Bunny funciona bastante bien en JRuby, pero se conocen errores de JRuby en versiones anteriores a JRuby 9000 que provocan un alto consumo de CPU. Los usuarios de JRuby deberían utilizar March Hare.
Bunny 1.7.x
fue la última versión compatible con CRuby 1.9.3 y 1.8.7
Los lanzamientos de Modern Bunny apuntan a la serie de lanzamientos RabbitMQ actualmente compatibles.
Registro de cambios.
Para utilizar Bunny en un proyecto gestionado con Bundler:
gem "bunny" , ">= 2.23.0"
Para instalar Bunny con RubyGems:
gem install bunny
A continuación se muestra un pequeño fragmento que demuestra cómo publicar y consumir sincrónicamente mensajes ("pull API") con Bunny.
Para ver un tutorial de 15 minutos con ejemplos más prácticos, consulte Introducción a RabbitMQ y Ruby usando 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
Para ver un tutorial de 15 minutos con ejemplos más prácticos, consulte Introducción a RabbitMQ y Ruby usando Bunny.
Las guías de documentación de Bunny se encuentran en docs/guides
en este repositorio:
Algunas guías de documentación de RabbitMQ muy relevantes:
Referencia de la API de Bunny.
Bunny tiene una lista de correo. Úselo para todas las preguntas, investigaciones y discusiones. Los problemas de GitHub deben usarse para que los mantenedores y contribuyentes específicos, bien entendidos y procesables puedan trabajar.
Le recomendamos que se una también a la lista de correo de RabbitMQ. No dude en hacer cualquier pregunta que pueda tener.
Si encuentra un error que comprende bien, una configuración predeterminada deficiente, documentación incorrecta o poco clara, o una característica faltante, presente un problema en GitHub.
Utilice la lista de correo de Bunny para preguntas, investigaciones y debates. Los problemas de GitHub deben usarse para que los mantenedores y contribuyentes específicos, bien entendidos y procesables puedan trabajar.
Al presentar un problema, especifique qué versiones de Bunny y RabbitMQ está utilizando, proporcione el contenido reciente del archivo de registro de RabbitMQ, los seguimientos completos de la pila de excepciones y los pasos para reproducir (o casos de prueba fallidos).
El otro cliente Ruby RabbitMQ ampliamente utilizado es March Hare (solo JRuby). Es una biblioteca madura que requiere RabbitMQ 3.3.x o posterior.
Consulte CONTRIBUTING.md para obtener más información sobre cómo ejecutar varios conjuntos de pruebas.
Publicado bajo la licencia MIT.