Это реалистичное ожидание распределенного механизма? - PullRequest
4 голосов
/ 05 декабря 2008

Я оцениваю ActiveMQ как потенциального брокера сообщений. Я написал тестовый код, чтобы попытаться понять ограничения производительности ActiveMQ.

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

try {
    while(true) {
        byte[] payload = new byte[(int) (Math.random() * 16384)];
        BytesMessage message = session.createBytesMessage();
        message.writeBytes(payload);
        producer.send(message);
} catch (JMSException ex) { ... }

Я был удивлен, что линия

producer.send(message);

блокируется, когда брокер входит в состояние отказа. Я надеялся, что возникнет какое-то исключение, поэтому будут некоторые признаки того, что брокер потерпел неудачу.

Я понимаю, что мой тестовый код является спамом для брокера, и я ожидаю, что он потерпит неудачу. Однако я бы предпочел, чтобы брокер «громко» потерпел неудачу, а не просто блокировал.

Это нереальное ожидание?

Обновление:

Ответ Ури ссылается на отчет об ошибке ActiveMQ, который был подан в марте. Описание ошибки включает в себя предложение, которое звучит примерно так, как я ищу: «если бы запрос на транспорт имел тайм-аут (это для отслеживания сценариев сбоев, то есть чего-то, что не должно происходить разумно), вещи скорее бы ошибались чем создание ожидающих потоков. "

Однако через 8 месяцев ошибка в настоящее время не назначается одним голосом. Так что я думаю, что вопрос все еще стоит, это что-то, что ActiveMQ должен (будет?) Реализовывать?

Ответы [ 3 ]

5 голосов
/ 05 декабря 2008

Вы тестируете проблему «медленный потребитель» и flowcontrol производителя , с которой сталкиваются все брокеры сообщений. Вы хотите провалить продюсеров, заблокировать их или спул на диск?

По умолчанию в ActiveMQ стандартная настройка заключается в блокировке производителей. Но вы можете настроить курсоры сообщений для спулинга на диск .

Кстати, вы не сказали, используете ли вы очереди / темы или постоянные / непостоянные; если вы используете непостоянные темы, есть другие стратегии, которые вы можете использовать для удаления сообщений и т. д.

1 голос
/ 05 декабря 2008

Вероятно, есть известная проблема, но не уверен, что она исправлена:

https://issues.apache.org/activemq/browse/AMQ-1625

0 голосов
/ 05 декабря 2008

Не уверен насчет конфигурации ActiveMQ, но другие JMS-провайдеры имеют различные параметры конфигурации, так что вы, возможно, сможете заставить ActiveMQ делать то, что вы хотите в этой ситуации.

Я знаю, что у Fiorano есть опции, чтобы указать, блокируют ли провайдеры в этой ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...