Проблема Tibco FT из-за сердцебиения - PullRequest
1 голос
/ 30 декабря 2011

У меня есть 2 экземпляра моего Java-приложения (A & B), работающие на той же машине, где B заблокирован для activate() обратного вызова.

Вот так я регистрирую свой обратный вызов:

new TibrvFtMember(this.tibrvQueue,
   this.orv,
   this.transport,
   MessagingProps.TIBCO_GROUP_FT, // Group name
   wt,            // Weight
   1,             // Active members
   2.0,             // Heartbeat (secs.)
   0.0,           // Prep. (secs.)
   2.5,             // Activation (secs.)
   null);

Я посылаю сердцебиение каждые 100 миллисекунд, чтобы убедиться, что мое приложение вовремя.

msg.add("Data", ++seq + ":" + MessagingProps.TIBCO_SUBJECT_FT);
                msg.setSendSubject(MessagingProps.TIBCO_SUBJECT_FT);
                transport.send(msg)

По какой-то причине (например, сборщик мусора / сборщик мусора), если мое активное приложение "A" задерживает отправкусердцебиение, сразу же активируется мое пассивное приложение «B», пока «A» все еще активно, где деактивация не вызывается на «A».И вскоре после того, как приложение «А» отправило сердцебиение, на приложении «В» вызывается деактивация.Это дает ошибочное поведение в течение нескольких секунд, так как оба приложения активны одновременно.

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

Пожалуйста, помогите мне, как я могу преодолеть эту проблему.

...