tutorial nodejs kafka rabbitmq

nodejs - rabbitmq tutorial



RabbitMQ creando colas y enlaces desde una lĂ­nea de comando (9)

Si tengo RabbitMQ instalado en mi máquina, ¿hay una manera de crear una cola de mensajes desde la línea de comandos y enlazarla a un determinado intercambio sin usar un cliente?

Creo que no es posible, pero quiero estar seguro.


Tutorial para crear y eliminar una cola en RabbitMQ:

No pude encontrar un comando de línea de comandos para hacerlo. Así es como lo hice en código con java.

Rabbitmq-server versión 3.3.5 en Ubuntu.

Listar las colas, aún no hay colas:

sudo rabbitmqctl list_queues [sudo] password for eric: Listing queues ... ...done.

Pon esto en CreateQueue.java

import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; import java.util.*; public class CreateQueue { public static void main(String[] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); Map<String, Object> args = new HashMap<String, Object>(); args.put("x-message-ttl", 60000); channel.queueDeclare("kowalski", false, false, false, args); channel.close(); connection.close(); } }

Suministre el archivo jar que vino con su instalación de rabbitmq:

Estoy usando la versión 0.9.1 de rabbitmq-client.jar, use la que viene con su versión de rabbitmq.

Compilar y ejecutar:

javac -cp .:rabbitmq-client.jar CreateQueue.java java -cp .:rabbitmq-client.jar CreateQueue

Debería terminar sin errores, revisa tus colas ahora:

sudo rabbitmqctl list_queues Listing queues ... kowalski 0 ...done.

la cola kowalski existe.


Instalar el complemento de gestión RabbitMQ . Viene con una herramienta de línea de comandos que puede utilizar para configurar todas sus colas / intercambios / etc.


Si está utilizando Linux Debian, hay un paquete llamado "amqp-tools". Instalarlo con

apt-get install amqp-tools

Luego puede usar la línea de comandos como amqp-publish para enviar mensajes a su cola

amqp-publish -e exchange_name -b "your message"

A continuación, puede recopilar mensajes de la cola mediante

amqp-get -q queue_name

o

amqp-consume -q queue_name

También hay (línea de comando) ejemplos de la biblioteca / paquete rabbitmq-c . Después de crearlo, puede enviar mensajes a través de la línea de comandos, como

amqp_sendstring localhost 5672 amq.direct test "hello world"

Que te diviertas ...


Tal vez un poco tarde para la fiesta, pero lo he hecho usando CURL.

Para colas:

curl -i -u RABBITUSER:RABBITPASSWORD -H "content-type:application/json" / -XPUT -d''{"durable":true}'' / http://192.168.99.100:15672/api/queues/%2f/QUEUENAME

Y para encuadernaciones.

curl -i -u RABBITUSER:RABBITPASSWORD -H "content-type:application/json" / -XPOST -d"{/"routing_key/":/"QUEUENAME/"}" / http://192.168.99.100:15672/api/bindings/%2f/e/EXCHANGENAME/q/QUEUENAME

Nota 192.168.99.100:15672 apunta a mi gestión de RMQ


ayuda a vincular el intercambio mientras estás en ello:

channel.queue_bind(queueName, exchange)

DO-;


rabbitmqctl, la interfaz de línea de comandos provista no expone la capacidad de crear una cola y enlazarla.

Sin embargo, es bastante trivial hacerlo con una secuencia de comandos rápida, sin embargo, la guía de iniciación de rabbit mq muestra varios ejemplos, tanto del editor como del consumidor.

#do some work to connect #do some work to open a channel channel.queue_declare(queue=''helloworld'')

Estoy ignorando la conexión, pero es un literal para crear una cola. La operación también es idempotente, lo que significa que puede incluir la declaración en un script y estar seguro de que no seguirá recreando la cola o eliminando una existente del mismo nombre.


Cree RabbitMq Exchange, cola y enlaces dinámicamente desde CLI en Windows

Ya tenía un servidor RabbitMQ instalado y funcionando con múltiples colas e intercambios y ahora quería crearlo sobre la marcha desde la línea de comandos. Sé que es una pregunta antigua, pero pensé que dar esta información sería útil.

Lo siguiente es lo que hice:

Preparar

  1. Descargué e instalé el instalador MSI de Python 2.6.6-201008-24 para Windows x86-64, cualquier versión de Python superior a 2.X pero no a 3.X
  2. Descargar RabbitMqAdmin: La Interfaz de usuario web de RabbitMq tiene una línea de comandos de enlace que navega a http://server-name:15672/cli/ (nombre-servidor: servidor en el que está instalado rabbitmq) alternativamente , use la URL anterior y guarde el archivo como rabbitmqadmin.exe en la ubicación de python exe

por ejemplo: C: / Python26 / C: / Python26 / python C: / Python26 / rabbitmqadmin.exe

Código: en un archivo por lotes se utilizan los siguientes comandos

  1. Crear intercambio:

    c: / python26 / python.exe rabbitmqadmin.exe declara el nombre de intercambio = ExchangeName1 type = topic durable = true

  2. Crear cola:

    c: / python26 / python.exe rabbitmqadmin.exe declare queue name = NameofQueue1 durable = true

  3. Crear enlace:

    c: / python26 / python.exe rabbitmqadmin.exe declare binding source = ExchangeName1 destination_type = queue destination = NameofQueue1 routing_key = RoutingKey1

ejecutando rabbitmqadmin.exe -help -subcommands enumera todos los comandos disponibles

por ejemplo: c: / python26 / python.exe rabbitmqadmin.exe -help -subcommands


Resumen:

Otras respuestas son buenas alternativas a lo que se pidió. A continuación se muestran los comandos que puede utilizar desde la línea de comandos.

Primero, haga todo el trabajo de preparación necesario, por ejemplo, instale rabbit, rabbitmqadmin y rabbitctl . La idea es usar comandos de rabbitmqctl y rabbitmqadmin . Puede ver algunos ejemplos de comandos: https://www.rabbitmq.com/management-cli.html

Ejemplo de comandos / configuración:

Los siguientes comandos deben darle la mayoría, si no todo lo que necesita:

# Get the cli and make it available to use. wget http://127.0.0.1:15672/cli/rabbitmqadmin chmod +x rabbitmqadmin mv rabbitmqadmin /etc/rabbitmq

Añadir un usuario y permisos.

rabbitmqctl add_user testuser testpassword rabbitmqctl set_user_tags testuser administrator rabbitmqctl set_permissions -p / testuser ".*" ".*" ".*"

Hacer un host virtual y establecer permisos

rabbitmqctl add_vhost Some_Virtual_Host rabbitmqctl set_permissions -p Some_Virtual_Host guest ".*" ".*" ".*"

Hacer un intercambio

./rabbitmqadmin declare exchange --vhost=Some_Virtual_Host name=some_exchange type=direct

Hacer una cola

./rabbitmqadmin declare queue --vhost=Some_Virtual_Host name=some_outgoing_queue durable=true

Hacer un enlace

./rabbitmqadmin --vhost="Some_Virtual_Host" declare binding source="some_exchange" destination_type="queue" destination="some_incoming_queue" routing_key="some_routing_key"

Vía alternativa para enlazar con Python

La siguiente es una alternativa al enlace de línea de comando, ya que a veces he tenido problemas con ella y el siguiente código de Python es más confiable.

#!/usr/bin/env python import pika rabbitmq_host = "127.0.0.1" rabbitmq_port = 5672 rabbitmq_virtual_host = "Some_Virtual_Host" rabbitmq_send_exchange = "some_exchange" rabbitmq_rcv_exchange = "some_exchange" rabbitmq_rcv_queue = "some_incoming_queue" rabbitmq_rcv_key = "some_routing_key" outgoingRoutingKeys = ["outgoing_routing_key"] outgoingQueues = ["some_outgoing_queue "] # The binding area credentials = pika.PlainCredentials(rabbitmq_user, rabbitmq_password) connection = pika.BlockingConnection(pika.ConnectionParameters(rabbitmq_host, rabbitmq_port, rabbitmq_virtual_host, credentials)) channel = connection.channel() channel.queue_bind(exchange=rabbitmq_rcv_exchange, queue=rabbitmq_rcv_queue, routing_key=rabbitmq_rcv_key) for index in range(len(outgoingRoutingKeys)): channel.queue_bind(exchange=rabbitmq_send_exchange, queue=outgoingQueues[index], routing_key=outgoingRoutingKeys[index])

Lo anterior se puede ejecutar como parte de un script utilizando python. Note que puse las cosas salientes en arreglos, lo que le permitirá recorrerlas. Esto debería facilitar las cosas para los despliegues.

Últimos pensamientos

Creo que lo anterior debería hacer que te muevas en la dirección correcta, usar google si algún comando específico no tiene sentido o leer más con rabbitmqadmin help subcommands . Intenté utilizar variables que se explicaran. Buena suerte :)


crear un intercambio: rabbitmqadmin -u {user} -p {password} -V {vhost} declare exchange name={name} type={type}

crear una cola: rabbitmqadmin -u {user} -p {password} -V {vhost} declare queue name={name}

Enlazar la cola de intercambio: rabbitmqadmin -u {user} -p {password} -V {vhost} declare binding source={Exchange} destination={queue}