Как однозначно идентифицировать слушателя сообщения в методе OnMessage
Я использую несколько слушателей на одну и ту же тему. Все слушатели выполняют один и тот же код. Я имею в виду тот же метод onMessage(). Это похоже на многопоточную систему. Я хочу убедиться, что каждое сообщение обрабатывается только одним слушателем. Я хочу сохранить кэш для хранения того, какой слушатель обработал какое сообщение. Но как определить слушателя? Моя конфигурация JMS для 2 слушателей
@Bean
public ActiveMQConnectionFactory connectionFactory(){
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL(DEFAULT_BROKER_URL);
return connectionFactory;
}
@Bean
public DefaultMessageListenerContainer listenerContainers() {
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.setClientId("consumer1");
container.setDestinationName(COMMENT_QUEUE);
container.setPubSubDomain(true);
container.setSessionTransacted(true);
container.setSubscriptionDurable(true);
container.setMessageListener(datafileSubscriber);
container.start();
return container;
}
@Bean
public DefaultMessageListenerContainer listenerContainers1() {
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.setClientId("consumer2");
container.setDestinationName(COMMENT_QUEUE);
container.setPubSubDomain(true);
container.setSessionTransacted(true);
container.setSubscriptionDurable(true);
container.setMessageListener(datafileSubscriber);
container.start();
return container;
}
Конфигурация каждого слушателя
setsessionTransacted true, чтобы брокер ждал подтверждения.
Долговечный, так как он долговечный, каждый должен иметь свой clientID.
Как я могу определить каждого слушателя сообщения в методе onMessage()? Одно временное решение - я могу использовать идентификатор потока, но когда система выйдет и перезапустится, идентификатор потока будет бесполезен для понимания. Поэтому я ищу "долговременное" решение для идентификации слушателя.