Rabbitmq Cheat Sheet



SQL to ReQL cheat sheet; Cookbook; Example projects; Administration. Administration tools; Scaling, sharding and replication; Permissions and user accounts; Failover; Backing up your data; System tables; Current issues; Statistics; Jobs; Version migration; Importing data; Third-party admin tools; Deployment. Start on system startup; Securing. Using EKS and Gitlab CI to deploy applications.

Typical tools: Kafka, RabbitMQ (AMQP), JMS. What the workflow engine does: timeout handling, managing activity chains / the flow, support stateful enterprise integration patterns like aggregator or resequencer, consistency and compensation handling aka Saga pattern as discussed in my talk “Lost in transaction” (recorded e.g. At JavaZone Oslo). Cheat Sheet - Docker. Regardless of whatever dependencies get added RUN groupadd -r rabbitmq && useradd -r-d /var/lib/rabbitmq -m-g rabbitmq rabbitmq # vs. Redis Cheat Sheet Edit Cheat Sheet. When you encounter a Redis instance and you quickly want to learn about the setup you just need a few simple commands to peak into the setup. Of course it doesn’t hurt to look at the official full command documentation, but below.

Общие упрощенные понятия. Возможно существуют способы задать другое поведение нежели данное упощенное.

Понятия

  • producer - отправитель, программный код, который отправляет сообщение.
  • consumer - получатель, программный код, который должен получить сообшение.
  • exchange - обменник, функционал RabbitMQ, получает сообщение с заданными параметрами от отправителя и:
    • может сбросить(удалить) сообщение или вернуть отправителю (зависит от атрибутов сообщения),
    • может отправить сообщение в очередь,
    • может отправить сообщение в несколько очередей (сообщение будет скопировано для каждой очереди)
  • queue - очередь, функционал RabbitMQ, хранит все сообщения и раздает их получателям.
  • message - сообщение, содержит атрибуты необходимые RabbitMQ, а также данные для передачи от отправителя к получателю
  • binding - связывание очереди и обменника. Обменник может отправить сообщения только в те очереди которые с ним связаны.
  • routingKey - ключ маршрутизации (может не использоваться), используется обменником для маршрутизации (выбора очереди(ей)) сообщений.
    • используется при связывании очереди с обменником
    • содержится в атрибуте сообщенияпри совпадении этих ключей сообщение будет отправлено в очередь

Обменник

Default exchange

Sheet

RabbitMQ всегда создает безымянный обменник типа direct.На этот обменник по умолчанию завязаны все очереди, где routingKey равен имени очереди.Отправка сообщения напрямую в очередь на самом деле это отправка сообщения безымянному обменнику с routingKey нужной очереди.Как итог это выглядит и работает как отправка сообщения напрямую в очередь, но сообщения всегда отправляются через обменник.

Тип обменика (один из четырех вариантов)

  1. direct - прямая отправка в очередь, используется routingKey. Сообщение с каким-то routingKey будет отправленно обменникомв очередь связанную с этим обменником с тем же routingKey, иначе сброшено(удалено).
  2. fanout - routingKey игнорируется, сообщения будут отправлены во все очереди связанные с обменником
  3. topic - похож на direct, сообщения отправляются с routingKey, но очереди связываются с обменником по шаблонной строке, сообщение попадет в те очереди с шаблонами которых совпадает routingKey
  4. headers - (todo)

Создание обменника

  • указать имя обменника
  • тип обменника
  • перечень аргументов
  • durable (bool) - сохранять и восстанавливать после рестарта RabbitMQ
  • autoDelete (bool) - удалится после того как все очереди отключатся
  • (todo)

Связывание обменника

Необходимо указать:

  • имя очереди
  • имя обменника
  • шаблон или routingKey (зависит от типа обменника)

Очередь

Перед использованием должны быть созданы.Повторное создание с теми же аргументами не создаст ошибки и не создаст еще одну очередь.Повторное создание с другими аргументами создаст ошибку.

Создание очереди

  • имя очереди (опционально), RabbitMQ сгенерирует имя при необходимости
  • опции
    • exclusive - используется только данным подключением, будет удалено после закрытия подключения
    • durable - сохранение после рестарта
    • autoDelete - удалится если кол-во получетелей станет ноль
    • maxPriority - очередь станет поддерживать приоритетные сообщения с приоритетом от 0 до maxPriority, чем выше число тем приоритетнее
    • (todo)

Отправитель

Программа не входящая в состав RabbitMQ, отправляет сообщения.

Отправка сообщения (публикация)

Sheet
  • имя обменника
  • ключ маршрутизации
  • содержимое сообщения
  • опции
    • expiration - строка в мс, время через которое сообщение будет удалено из очереди
    • priority - приоритет, для приоритетных очередей
    • persistent - сохранение сообщения при перезагрузки
    • mandatory - если true, то сообщение будет возвращено отправителю в случае когда не нашлось очереди для отправки
    • (todo)

Получатель

Программа не входящая в состав RabbitMQ, получает сообщения.

Прием сообщения

  • имя очереди
  • функция
  • опции
    • noAck - сообщение подверждается при получении автоматически и будет удалено из очереди независимо от как обработано сообщение получателем
    • exclusive - эксклюзивное подключение
    • priority - приоритет получателя

Сервер вернет consumerTag, необходимый для отмены приема сообщений в будущем.Null вернется для отмененных сообщений.

Ограничение на прием

Количество не подтвержденных сообщений которых может получить получатель.

docker daemon

Enable buildkit

Add to /etc/docker/daemon.json:

docker-compose

Devices

Labels

Rabbitmq Cheat Sheet Pdf

Rabbitmq cheat sheet printable

External Network

Dockerfile

Docker Stop Signal

imagemagick

vim

path update

download & extract tar.gz

gpg dirmgr explained

purge

list what exposed ports do

cassandra

gosu

debian

copy with proper permissions

su-exec

setgid

npm

Rabbitmq Cheat Sheet

gosu

tini

node

redis

docker

google cloud sdk

kubectl

pip

Rabbitmq Cheat Sheet

locale

tomcat

https://github.com/Unidata/tomcat-docker/blob/master/Dockerfile

gosu tomcat

Secure repository setup

create application folder structure

Download and clean up in one layer

Package Manager tricks

Metadata

Make sure to add ARG statements as late as possible to not invalidate the layer cache needlessly.Each ARG will be prepended to all subsequent RUN statements, i.e. building an image with the following Dockerfile docker --pull --tag foo:latest --build-arg GIT_COMMIT=46e24af6 --build-arg USERNAME=flask .

Effectively results in the following calls:

Since the git commit hash will typically change with each build the build will not make good use of Docker’s layer cache

Python

Golang