Имеет ли значение порядок полей в теме RabbitMQ? - PullRequest
0 голосов
/ 22 марта 2011

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

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

<instance uuid>.<major component>.<minor component>.<log level>

или другая альтернатива что-то вроде:

<log level>.<major component>.<minor component>.<instance uuid>

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

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Я думаю, что порядок, вероятно, не так важен, как сложность (количество разделителей периода) и количество привязок, которые будет иметь ваш брокер.Количество подстановочных знаков, используемых в ваших привязках, также повлияет на это.Но вопрос в том, насколько все это повлияет на производительность?

Если у вас будет только несколько сотен очередей, связанных с этой схемой, я бы не стал беспокоиться.Команда Rabbit только что опубликовала новое сообщение в блоге о том, что они делали в области маршрутизации сообщений в обменах темами, и очевидно, что оно сильно оптимизировано.Учитывая последний график в этом посте, я бы по крайней мере установил и запустил Rabbit MQ 2.4.0 в качестве вашего брокера.

Наконец, я бы предложил провести несколько очень реалистичных тестов на производительность / производительность с использованием обоих предложенных вами вариантов.Заказы и посмотреть, если они работают по-другому с вашим приложением.Это самый надежный способ выяснить, повлияет ли порядок на вашу систему.

0 голосов
/ 26 апреля 2011

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

Если у вас есть abcd и afgh, тогда вы можете делать что-то вроде. #

, но если вы используете dacb и hagf, тогда вам нужно сделать что-то вроде * .a. # И вы можетесоблазн попробовать # .a. #, который не будет делать то, что вы ожидаете.

  • быстрее, чем #, а одно совпадение подстановки быстрее, чем два.

С другойрука, длинный список не подстановочных совпадений может быть быстрее, чем вы думаете.Время для бенчмаркинга.

...