RabbitMQ: расчет на стороне сервера для каждого полученного сообщения

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

У меня есть очередь для оценок, и когда получено слишком много плохих отзывов (скажем, больше десяти), потребитель должен быть уведомлен.

Какие варианты существуют для серверной логики? Я читал о Spring RabbitMQ, но не уверен?


person Jon555Nose    schedule 17.05.2015    source источник
comment
Сторона сервера: сторона, на которой также работает RabbitMQ. Расчет: у меня есть очередь для оценок, и когда получено слишком много плохих отзывов (скажем, более десяти), потребитель должен быть уведомлен.   -  person Jon555Nose    schedule 17.05.2015
comment
Спасибо IMSoP, первое предложение звучит хорошо для моего варианта использования. Я сосредоточен на Java. Так что я, вероятно, буду использовать Spring или есть альтернатива? Может ли потребитель этого задания работать на том же хосте, что и брокер RabbitMQ, или это плохой дизайн?   -  person Jon555Nose    schedule 17.05.2015
comment
Я поместил свои комментарии в ответ и отредактировал некоторые из ваших в самом вопросе, так как длинные потоки комментариев здесь не приветствуются. Надеюсь, это поможет.   -  person IMSoP    schedule 17.05.2015


Ответы (1)


На самом деле нет «серверной стороны» с системой, основанной на сообщениях; скорее служба RabbitMQ находится где-то и ретранслирует сообщения любому количеству производителей и потребителей и от них. В зависимости от имеющегося у вас оборудования и объема выполняемой обработки все они могут выполняться на одном сервере или у вас могут быть ресурсы, выделенные для каждой задачи.

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

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

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

person IMSoP    schedule 17.05.2015
comment
Спасибо за объяснение IMSoP, мне очень помогает :) - person Jon555Nose; 18.05.2015
comment
@Jon555Nose Рад это слышать. Если вы нажмете на галочку рядом с ответом, вопрос будет отмечен как решенный для других читателей. - person IMSoP; 18.05.2015