org.apache.camel.spi.InflightRepository Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of camel-core Show documentation
Show all versions of camel-core Show documentation
The Core Camel Java DSL based router
/**
* 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.camel.spi;
import java.util.Collection;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.StaticService;
/**
* A repository which tracks in flight {@link Exchange}s.
*
* @version
*/
public interface InflightRepository extends StaticService {
/**
* Information about the inflight exchange.
*/
interface InflightExchange {
/**
* The exchange being inflight
*/
Exchange getExchange();
/**
* The duration in millis the exchange has been inflight
*/
long getDuration();
/**
* The elapsed time in millis processing the exchange at the current node
*/
long getElapsed();
/**
* The id of the node from the route where the exchange currently is being processed
*
* Is null if message history is disabled.
*/
String getNodeId();
/**
* The id of the route where the exchange currently is being processed
*
* Is null if message history is disabled.
*/
String getRouteId();
}
/**
* Adds the exchange to the inflight registry to the total counter
*
* @param exchange the exchange
*/
void add(Exchange exchange);
/**
* Removes the exchange from the inflight registry to the total counter
*
* @param exchange the exchange
*/
void remove(Exchange exchange);
/**
* Adds the exchange to the inflight registry associated to the given route
*
* @param exchange the exchange
* @param routeId the id of the route
*/
void add(Exchange exchange, String routeId);
/**
* Removes the exchange from the inflight registry removing association to the given route
*
* @param exchange the exchange
* @param routeId the id of the route
*/
void remove(Exchange exchange, String routeId);
/**
* Current size of inflight exchanges.
*
* Will return 0 if there are no inflight exchanges.
*
* @return number of exchanges currently in flight.
*/
int size();
/**
* Will always return 0 due method is deprecated.
* @deprecated will be removed in a future Camel release.
*/
@Deprecated
int size(Endpoint endpoint);
/**
* Removes the route from the in flight registry.
*
* Is used for cleaning up resources to avoid leaking.
*
* @param routeId the id of the route
*/
void removeRoute(String routeId);
/**
* Current size of inflight exchanges which are from the given route.
*
* Will return 0 if there are no inflight exchanges.
*
* @param routeId the id of the route
* @return number of exchanges currently in flight.
*/
int size(String routeId);
/**
* A read-only browser of the {@link InflightExchange}s that are currently inflight.
*/
Collection browse();
/**
* A read-only browser of the {@link InflightExchange}s that are currently inflight.
*
* @param limit maximum number of entries to return
* @param sortByLongestDuration to sort by the longest duration. Set to true to include the exchanges that has been inflight the longest time,
* set to false to sort by exchange id
*/
Collection browse(int limit, boolean sortByLongestDuration);
}