
io.openmessaging.api.LifeCycle Maven / Gradle / Ivy
/*
* 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 io.openmessaging.api;
/**
* The {@code LifeCycle} defines a lifecycle interface for a OMS related service endpoint, like {@link Producer}, {@link
* Consumer}, and so on.
*
* If the service endpoint class implements the {@code ServiceLifecycle} interface, most of the containers can manage
* the lifecycle of the corresponding service endpoint objects easily.
*
* Any service endpoint should support repeated restart if it implements the {@code ServiceLifecycle} interface.
*
* @version OMS 1.2.0
* @since OMS 1.2.0
*/
public interface LifeCycle {
/**
* Used to determine whether the current instance is started.
*
* @return if this instance has been started success, this method will return true, otherwise false.
*/
boolean isStarted();
/**
* Used to determine whether the current instance is closed.
*
* @return if this instance has been stopped, this method will return true, otherwise false.
*/
boolean isClosed();
/**
* Used for startup or initialization of a service endpoint. A service endpoint instance will be in a ready state
* after this method has been completed.
*/
void start();
/**
* Notify a service instance of the end of its life cycle. Once this method completes, the service endpoint could be
* destroyed and eligible for garbage collection.
*/
void shutdown();
}