Проблема селектора MessageConsumer на ActiveMQ - PullRequest
1 голос
/ 26 апреля 2011

Может ли кто-нибудь подтвердить, прав я или нет в этом.Мне кажется, что операция «селектор» выполняется в реализации MessageConsumer.(т. е. ВСЕ сообщения все еще отправляются из Message Broker в MessageConsumer, а затем с этими сообщениями выполняется операция «селектор»).Проблема возникает, когда у нас есть куча сообщений, которые нам не интересны (то есть не соответствуют нашему селектору), эти сообщения в конечном итоге будут заполнять внутреннюю очередь MessageConsumer из-за предвыборки или ограничения кэша.В результате мы не сможем получать какие-либо новые сообщения, особенно те, которые нам интересны с помощью селектора.

Итак, есть ли способ настроить AMQ для выполнения операции выбора на стороне MessageBroker?Должен ли я начать смотреть на «перехватчик» и создать свой собственный BrokerPlugin?Любой совет о том, как обойти эту проблему?

Я действительно ценю любой ответ.

Спасибо, Soonthorn A.

1 Ответ

1 голос
/ 27 апреля 2011

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

Проблема заключается в политике назначения в игре для вашего брокера.По умолчанию брокер будет отображать только 200 сообщений для браузера, чтобы не использовать всю доступную память и не влиять на общую производительность.Вы можете увеличить это число через свой собственный DestinationPolicy в activemq.xml, см. Страницу документации здесь .

...