您可以使用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