Rabbitmq разных типов сообщений в одной очереди - PullRequest
0 голосов
/ 06 декабря 2018

Есть ли решение для разделения одной очереди между различными типами сообщений?

Я знаю тему обмена, но она использует другую очередь.

1 Ответ

0 голосов
/ 06 декабря 2018

RabbitMQ не зависит от типа / содержания сообщений, поэтому вы можете легко публиковать данные самых разных типов в одной очереди.Это ваше приложение должно обрабатывать анализ.Для этого я представлю два решения:

Заголовки сообщений

Вы можете использовать заголовки сообщений, чтобы добавить дополнительную информацию о типе сообщения.

Dictionary<string, object> headers = new Dictionary<string, object>();
headers("type", "type1");

IBasicProperties basicProperties = model.CreateBasicProperties();
basicProperties.Headers = headers;
byte[] messageBytes = Encoding.UTF8.GetBytes(message);
model.BasicPublish(_headersExchange, "", basicProperties, messageBytes);

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

Чтобы использовать заголовок после получения сообщения,Вы можете использовать что-то вроде этого:

deliveryArguments.BasicProperties.Headers[headerKey]

Кодирование типа сообщения в теле сообщения

Вы также можете определить свой собственный формат сообщения или добавить дополнительное поле, описывающеетип данных.Но эта реализация сильно зависит от вашего текущего формата сообщения, поэтому я не думаю, что было бы целесообразно привести пример.

...