/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.sling.event.jobs; import org.osgi.annotation.versioning.ProviderType; /** * This is a job queue processing job events. * @since 3.0 */ @ProviderType public interface Queue { /** * Get the queue name. * @return The queue name */ String getName(); /** * Return statistics information about this queue. * @return The queue statistics */ Statistics getStatistics(); /** * Get the corresponding configuration. * @return The queue configuration */ QueueConfiguration getConfiguration(); /** * Suspend the queue - when a queue is suspended it stops processing * jobs - however already started jobs are finished (but not rescheduled). * Depending on the queue implementation, the queue is only suspended * for a specific time. * A queue can be resumed with {@link #resume()}. */ void suspend(); /** * Resume a suspended queue. {@link #suspend()}. If the queue is not * suspended, calling this method has no effect. * Depending on the queue implementation, if a job failed a job queue might * sleep for a configured time, before a new job is processed. By calling this * method, the job queue can be woken up and force an immediate reprocessing. * This feature is only supported by ordered queues at the moment. If a queue * does not support this feature, calling this method has only an effect if * the queue is really suspended. */ void resume(); /** * Is the queue currently suspended? * @return {code true} if the queue is supsended */ boolean isSuspended(); /** * Remove all outstanding jobs and delete them. This actually cancels * all outstanding jobs. */ void removeAll(); /** * Return some information about the current state of the queue. This * method is meant to see the internal state of the queue for debugging * or monitoring purposes. * @return Additional state info */ String getStateInfo(); /** * For monitoring purposes and possible extensions from the different * queue types. This method allows to query state information. * @param key The key for the state * @return The state or {@code null}. */ Object getState(final String key); }