2016-04-04 3 views
0

У меня есть следующий код:NullPointerException во время удаления элемента из очереди hazelcast

 hazelcastInstance.<Void>getQueue(UserStorageService.LOGOUT_ALL_USERS_QUEUE_NAME).addItemListener(new ItemListener<Void>() { 
      @Override 
      public void itemAdded(ItemEvent<Void> item) { 
       //process event logic 
       hazelcastInstance.<Void>getQueue(UserStorageService.LOGOUT_ALL_USERS_QUEUE_NAME).remove(item.getItem()); 
      } 

      @Override 
      public void itemRemoved(ItemEvent<Void> item) { 
      } 
     }, false); 

Я просто послать сигнал, и здесь я обрабатывать этот сигнал.

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

Я задаю этот вопрос, потому что в журналах я вижу следующее StackTrace:

java.lang.NullPointerException: Object is null 
     at com.hazelcast.util.Preconditions.checkNotNull(Preconditions.java:59) 
     at com.hazelcast.collection.impl.queue.QueueProxySupport.checkObjectNotNull(QueueProxySupport.java:166) 
     at com.hazelcast.collection.impl.queue.QueueProxySupport.removeInternal(QueueProxySupport.java:128) 
     at com.hazelcast.collection.impl.queue.QueueProxyImpl.remove(QueueProxyImpl.java:96) 

ответ

1

Похоже, вы получаете item.getItem(), чтобы быть пустым. Вам не разрешено null в API удаления очереди. Можете ли вы установить элемент управления перед удалением, чтобы узнать, что вы получаете для item.getItem()?

Смежные вопросы