Я использую параллельную хэш-карту, которая заполняется по мере поступления сообщения jms. Когда приходит тот же ключ, его необходимо переопределить.
Теперь я сталкиваюсь с проблемой: карта всегда пуста.Поэтому каждый раз, когда запись добавляется, а не переопределяется.
Не знаю, какую ошибку я делаю.Пожалуйста, просмотрите код и помогите мне.
public class Dispatcher{
private static ConcurrentHashMap<String, Executor> map= new ConcurrentHashMap<>();
public dispatch(String key, String message) {
if(map.containsKey(key)){ //this always returns false. Printed to check and it is empty.
//rest of the code
}else{
map.put(key,new Executor(message));
//rest of the code
}}
public class MsgListener implements SessionAwareListener {
Dispatcher dispatcher = new Dispatcher();
public void onMessage(javax.jms.Message, Session session) {
//Rest of the code
dispatcher.dispatch(key,msg);
}}
Вход, используемый для тестирования:
Lock1 - Сообщение 1
Lock1 - Сообщение 2
Lock2- Сообщение 3
Lock3 - Сообщение 4
Класс диспетчера создается только один раз внутри вызывающего класса.Я проверил это и нашел для печати тот же объект.