Я создаю приложение весенней загрузки с кластером серверов ActiveMQ. Чтобы решить проблему с дублированием сообщений на стороне потребителя, все исключенные из очереди JMSMessageID будут сохранены в redis, и потребитель будет игнорировать все новые сообщения с повторяющимися идентификаторами в redis.
Для этого Мне нужно, чтобы все JMSMessageID были уникальными. Я попытался установить JMSMessageID в коде производителя, но мне кажется, что я не могу его изменить. Мой вопрос заключается в том, что в распределенной системе (несколько серверов приложений и кластер серверов ActiveMQ) будет ли система, сгенерированная JMSMessageID, быть уникальной?
jmsTemplate.send(name, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
Email email = new Email("l****@gmail.com", "this is test body", "test");
ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setJMSMessageID(customID);
return objectMessage;
}
});