2016-04-04 5 views
0

Ich habe den folgenden Code:Nullpointer während Element aus Hazelcast Warteschlange gelöscht

 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); 

ich nur Signal senden und hier verarbeite ich dieses Signal.

Ich bin ein wenig confising sollte ich Ereignis nach seiner Verarbeitung löschen? Ich mache es, um Warteschlangenüberlauf zu vermeiden, aber ich bin mir nicht sicher, ob es sinnvoll ist oder nicht.

ich diese Frage stellen, weil in logs ich sehe folgende 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) 

Antwort

1

Scheint, wie Sie item.getItem() werden immer null zu sein. Sie dürfen keine Null in der Warteschlange entfernen API. Können Sie vor dem Entfernen ein Steuerelement setzen, um zu sehen, was Sie für die item.getItem() erhalten?

Verwandte Themen