您可以使用SPI访问侦听器。这是一些示例代码,当事件发生时触发器被触发(例如put)。
public void publishEvent(ItemEventType eventType, Data data) {
EventService eventService = getNodeEngine().getEventService();
Collection<EventRegistration> registrations = eventService.getRegistrations(getServiceName(), name);
Address thisAddress = getNodeEngine().getThisAddress();
for (EventRegistration registration : registrations) {
QueueEventFilter filter = (QueueEventFilter) registration.getFilter();
QueueEvent event = new QueueEvent(name, filter.isIncludeValue() ? data : null, eventType, thisAddress);
eventService.publishEvent(getServiceName(), registration, event, name.hashCode());
}
}
那么,你所能做的就是创建自己的操作,并让它执行定期拥有该队列中的部件(队列不分区),并检查监听计数。如果没有听众和某种宽限期超过,您可以销毁该队列。
PS:可以操作发送到通过组合使用的队列名称与拥有该队列中的构件: OperationService: InternalCompletableFuture invokeOnPartition(字符串服务名,操作运算,INT的partitionid); –
pveentjer
2014-10-28 06:58:45