blob: 2134aba3db115a1e32278bb94deac577af4acb46 [file] [log] [blame]
/*
* 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);
}