Забота с клиентом не удастся сначала сделать резервную копию брокераJAVA

Программисты JAVA общаются здесь
Anonymous
Забота с клиентом не удастся сначала сделать резервную копию брокера

Сообщение Anonymous »

Я изо всех сил пытаюсь заставить своего клиента отключить сбой, как я ожидал в своем кластере. топология. Однако, я вижу, что я вижу, что мой клиент прыгает на другой основной узел. Иногда я вижу, что вещи ведут себя так же, как и ожидалось, но, кажется, зависит от того, где мои потребители изначально создаются .... < /p>
Например, если у меня есть потребитель, в конечном итоге на броке Потребитель B заканчивает брокером B, затем, когда я закрываю брокера, потребитель A просто перепрыгнет к брокеру B вместо того, чтобы перепрыгнуть к его реплицированной резервной копии. Затем, если я закрою брокера B после перезапуска брокера, потребитель, который ранее прыгнул в брокер B, отпрыгнется в брокер некоторое время, который другой потребитель должным образом уйдет в спину для брокера b. < /P>
Я не уверен, что это изменит что -то или будет иметь важное значение, но я использую реплицированную настройку для HA, где у меня есть все 6 узлов, которые работают локально с смещением портов. Конечной целью будет 3 сервера, но сейчас это так, как я могу протестировать вещи. DO добавить «HA» и «ReconnectAttempts» в мой URL Factory Connection Factory.

Код: Выделить всё

public ActiveMQConnectionFactory activeMQConnectionFactory() throws NamingException{
ArtemisTargetConfig config = (ArtemisTargetConfig) new InitialContext().lookup("java:comp/env/bean/ArtemisConfig");
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("udp://" + config.getGroupAddress() + ":" + config.getGroupPort() + "?ha=true&reconnectAttempts=10");
cf.setUser(config.getUserName());
cf.setPassword(config.getPassword());

return cf;
}
Строка URL выше превращается в UDP: //231.7.7.7: 9876? Ha = true & Reconnectattempts = 10 .
мой файл jmsconfig.java. < /p>

Код: Выделить всё

@EnableJms
@Configuration
public class JmsConfig {

private static final Logger LOG = LoggerFactory.getLogger(JmsConfig.class);

private final ActiveMQConnectionFactory activeMQConnectionFactory;

@Autowired
public JmsConfig(
ActiveMQConnectionFactory activeMQConnectionFactory){
this.activeMQConnectionFactory = activeMQConnectionFactory;

@Bean
public CachingConnectionFactory cachingConnectionFactory() {
return new CachingConnectionFactory(activeMQConnectionFactory);
}

@Bean
public JmsTemplate jmsTemplate(CachingConnectionFactory cachingConnectionFactory) {
JmsTemplate template = new JmsTemplate(cachingConnectionFactory);
template.setPubSubDomain(false);
return template;
}

@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory () {

DefaultJmsListenerContainerFactory jmsListenerContainerFactory = new DefaultJmsListenerContainerFactory();
jmsListenerContainerFactory.setConnectionFactory(activeMQConnectionFactory);
jmsListenerContainerFactory.setSessionAcknowledgeMode(ActiveMQJMSConstants.INDIVIDUAL_ACKNOWLEDGE);
jmsListenerContainerFactory.setPubSubDomain(false);

MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
converter.setObjectMapper(objectMapper);
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
jmsListenerContainerFactory.setCacheLevel(null);
jmsListenerContainerFactory.setMessageConverter(converter);

return jmsListenerContainerFactory;
}
Вот первичный и резервный Broker.xml , который я обрезал, чтобы содержать только области, которые, по моему мнению, могут быть актуальными.
Primary1: < /p>
localhost


tcp://localhost:61616



tcp://localhost:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;amqpMinLargeMessageSize=102400;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;amqpDuplicateDetection=true;supportAdvisory=false;suppressInternalManagementObjects=false



cluster-admin
apassword

231.7.7.7
9876

5000
artemis





231.7.7.7
9876
10000





artemis
ON_DEMAND
1







true
true



< /code>
backup1: < /pbr /> localhost


tcp://localhost:61617




tcp://localhost:61617?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;amqpMinLargeMessageSize=102400;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;amqpDuplicateDetection=true;supportAdvisory=false;suppressInternalManagementObjects=false



cluster-admin
aPassword

231.7.7.7
9876

5000
artemis





231.7.7.7
9876
10000





artemis
ON_DEMAND
1







true




< /code>
Вот какова операция «Listnetworktopology» в брокере показывает мне < /p>
[{"nodeID":"19f26f12-ee1f-11ef-b81c-00155df5022d","live":"localhost:61616","primary":"localhost:61616","backup":"localhost:61617"},
{"nodeID":"b071e7f0-ee3f-11ef-b10d-00155df5022d","live":"localhost:61620","primary":"localhost:61620","backup":"localhost:61621"},
{"nodeID":"d46e2693-ee1f-11ef-9cd3-00155df5022d","live":"localhost:61618","primary":"localhost:61618","backup":"localhost:61619"}]
< /code>
Вот некоторая дополнительная информация: < /p>

Я подтвердил, что репликация работает и в моем основном брокере Журналы я вижу AMQ221025: Репликация: отправка niosequentialfile, когда я загружаю свои резервные копии (а также AMQ221031: резервная копия объявлена ​​в моем резервной копии).
< /li>
Я пытался полностью удалить свой CachedConnectionFactory. < /p>
< /li>
Я попытался удалить
и переделать каждого из моих брокеров на всякий случай. (Это, казалось, сработало
в течение короткого периода). < /P>
< /li>
< /ul>

Подробнее здесь: https://stackoverflow.com/questions/794 ... oker-first

Вернуться в «JAVA»