RabbitMQ 1.6 - выпущен релиз

Новое в данном релизе 1.6.0:

  • Реализована поддержка вложенных объектов-коллекций в заголовках сообщений, тем самым поддержаны сценарии многократной пересылки недоставленных сообщений по каналам dead-letters

  • Повышено удобство работы с формами подписок и рассылок, настроек соединения с серверами RabbitMQ

  • Расширен программный интерфейс обработки КлиентОчередиСообщений, добавлены методы прямой работы с библиотекой V8RMQClient

Исправлены выявленные ошибки

Вот что касается первой части - хочу отдельно прокоментировать:

А во вторых вот что интересно.

  • дело в что у любого сообщения есть заголовки - большая их часть это служебные заголовки, которые тем не менее доступны для организации логики. Например “Формат сообщения - XML, JSON, Base64”, “Очередь ответа - Reply-to” и т.д.

НО - доступны пользовательские заголовки которые может заполнять программист например

Сообщение.УстановитьЗаголовок("Важность", "Крайне высокая");

Работы с пользовательскими заголовками была доступна еще с предыдущих релизов но только для простых типов “Строка, Число”. Отличительное особенностью этого релиза стало то, что теперь можно устанавливать массив, а точнее словарь “ключ-значение” в качестве пользовательских заголовков, плюс на этом же функционале базируется и “массив параметров для мертвых сообщений”, чтобы организовать логику

ПотокОбработкиКоллизий.ПодписатьНаОчередь("коллизии", ПриПолученииКолизии());

Процедура ПриПолученииКоллизии(Сообщение)
  Сообщить(Сообщение.ЗаголовкиКоллизии.ОчередьИсточник);
КонецПроцедуры

Сообственно - как используют пользовательские заголовки C# программисты (а именно для них в том числе и сделано это нововведение)

var props = model.CreateBasicProperties();
props.Headers = new Dictionary<string,object> { { "key", "some value" } };
props.Headers.Metadata = new Dictionary<string,object> { { "key", "some value" } };

То есть они добавляют отдельный пункт заголовков с идентификатором и сохраняют в нем метаданные применительно к сообщению. метаданные не в нашем 1С смысле, а метаданные необходимые для работы с телом сообщения.

Например - если отправляется событие изменения строк документа, то в метаданных зашивается ссылка на исходный объект, а в теле сообщение едет только объект строки.

Вообщем разное (в зависимости от задачи) может быть использование.

Апдейт разослан согласно действующим контрактам на обновление -

кнопка “Ой у нас нет подписки” распложена на странице продукта https://silverbulleters.org/rabbitmq

1 Симпатия