Потребитель HornetQ перестает получать сообщения через N часов

Я использую потребитель HornetQ (v2.2.13), работающий автономно, для чтения постоянной темы, опубликованной сервером JBOSS (7.1.1 final). Все идет хорошо в течение нескольких часов (между 2-6), а затем потребитель просто перестает получать сообщения из темы. Из файла журнала на сервере я вижу, что данные продолжают перекачиваться по каналу, но файл журнала потребителя указывает, что клиент перестал читать данные. Я сделал вывод из того, что клиент сказал, что в последний раз он читал сообщение не по теме, было 12:00:00, а журнал сервера говорит, что последний раз, когда он отправил сообщение в тему, было 14:00:00.

Я пытался настроить конфигурации HornetQ, но, похоже, это не работает в течение длительного времени.

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

private TransportConfiguration getTC(String hostname) {
        Map<String,Object> params = new HashMap<String, Object>();
        params.put(TransportConstants.HOST_PROP_NAME, hostname);
        params.put(TransportConstants.PORT_PROP_NAME, 5445);
        TransportConfiguration tc = new TransportConfiguration(NettyConnectorFactory.class.getName(), params);
        return tc;

    }

    private Topic createDestination(String destinationName) {
        Topic topic = new HornetQTopic(destinationName);
        return topic;

    }

    private HornetQConnectionFactory createCF(TransportConfiguration tc) {
        HornetQConnectionFactory cf = HornetQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType .CF, tc);
        return cf == null ? null : cf;

    }

Фрагмент кода, который создает сеанс и запускает его:

TransportConfiguration tc = this.getTC(this.hostname);
        HornetQConnectionFactory cf = this.createCF(tc);
        cf.setRetryInterval(4000);
        cf.setReconnectAttempts(10);
        cf.setConfirmationWindowSize(1000000);

        Destination destination = this.createDestination(this.topicName);
        logger.info("Starting Topic Connection");
        try {
            this.connection = cf.createConnection();

            connection.start();
            this.session = connection.createSession(transactional, ackMode);
            MessageConsumer consumer = session.createConsumer(destination);
            consumer.setMessageListener(this);

            logger.info("Started topic connection");
        } catch (Exception ex) {
            ex.printStackTrace();
            logger.error("EXCEPTION!");
        }

person FloppyDisk    schedule 27.04.2012    source источник


Ответы (1)


Вы не получаете никакого журнала об отключении сервера на стороне сервера.

Вы пробовали поиграться с client-failure-check-period и другими параметрами пинга?

А как насчет настроек ВМ?

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

person Clebert Suconic    schedule 27.04.2012
comment
Я не вижу никаких журналов на стороне сервера об отключениях, единственный раз, когда я вижу какие-либо сообщения об отключениях, это когда я останавливаю сервер перед клиентом, и клиент говорит, что не может повторно подключиться. Что касается TX, я проверяю каждое сообщение, как только его получаю. - person FloppyDisk; 30.04.2012
comment
Не имея возможности воспроизвести это или имея больше информации, я могу только догадываться. Мы тестировали подобные сценарии и не обнаружили никаких проблем. Я предполагаю, что у вас не настроен пейджинг, и другая подписка вызывает блокировку системы. Вы должны либо убедиться, что у вас нет мертвой подписки (вы создали подписку и забыли о ней), либо настроить пейджинг. Почему бы вам не перенести обсуждение на форум пользователей hornetq, где вы можете предоставить больше информации? - person Clebert Suconic; 01.05.2012
comment
Я начну тему там или позже сегодня или завтра утром тогда. Спасибо! - person FloppyDisk; 01.05.2012
comment
Проверьте, нет ли у вас мертвой подписки. (что кажется вполне причиной). - person Clebert Suconic; 01.05.2012
comment
Я разместил новую тему на форумах hornetq здесь: community.jboss.org/thread/199204 ?tstart=0 - person FloppyDisk; 03.05.2012