从hazelcast队列中删除项目时出现NullPointerException

时间:2016-04-04 10:49:12

标签: java events nullpointerexception queue 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 个答案:

答案 0 :(得分:1)

好像你将item.getItem()变为null。队列删除API中不允许使用null。你可以在删除之前放置一个控件来查看你为item.getItem()得到了什么吗?