All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.camel.spi.BacklogTracerEventMessage Maven / Gradle / Ivy

The newest version!
/*
 * 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.Map;

import org.apache.camel.Endpoint;

/**
 * Represents a traced message by the BacklogTracer.
 */
public interface BacklogTracerEventMessage {

    String ROOT_TAG = "backlogTracerEventMessage";
    String TIMESTAMP_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";

    /**
     * Unique id of the traced message
     */
    long getUid();

    /**
     * Whether this is a new incoming message and this is the first trace.
     */
    boolean isFirst();

    /**
     * Whether this is the last trace of the message (its complete).
     */
    boolean isLast();

    /**
     * Timestamp of the traced event
     */
    long getTimestamp();

    /**
     * The location of the trace (source code name:line) if possible.
     */
    String getLocation();

    /**
     * Route id
     */
    String getRouteId();

    /**
     * Whether this event was from a route that is created from Rest DSL.
     */
    boolean isRest();

    /**
     * Whether this event was from a route that is created from route template or kamelet.
     */
    boolean isTemplate();

    /**
     * Node id where the message is being routed to
     */
    String getToNode();

    /**
     * The exchange id
     */
    String getExchangeId();

    /**
     * The name of the thread that is processing the message, when this event was captured.
     */
    String getProcessingThreadName();

    /**
     * The content of the message as XML (body and headers)
     */
    String getMessageAsXml();

    /**
     * The content of the message as JSon (body and headers)
     */
    String getMessageAsJSon();

    /**
     * Time elapsed for processing the given node (in millis).
     */
    long getElapsed();

    /**
     * Whether the message is done processing the given node
     */
    boolean isDone();

    /**
     * Did the message fail during processing (i.e. was an exception thrown)
     */
    boolean isFailed();

    /**
     * Was there an exception thrown during processing
     */
    boolean hasException();

    /**
     * The tracing caused an exception which can be captured
     */
    void setException(Throwable cause);

    /**
     * The exception as XML (exception type, message and stacktrace)
     */
    String getExceptionAsXml();

    /**
     * The exception as JSon (exception type, message and stacktrace)
     */
    String getExceptionAsJSon();

    /**
     * The endpoint uri if this trace is either from a route input (from), or the exchange was sent to an endpoint such
     * as (to, toD, wireTap) etc.
     */
    String getEndpointUri();

    /**
     * Whether the endpoint is remote.
     *
     * @see Endpoint#isRemote()
     */
    boolean isRemoteEndpoint();

    /**
     * Gets the endpoint remote address such as URL, hostname, connection-string, or cloud region, that are component
     * specific.
     *
     * @return the address or null if no address can be determined.
     * @see    EndpointServiceLocation
     */
    String getEndpointServiceUrl();

    /**
     * Get the endpoint protocol the service is using such as http, amqp, tcp.
     *
     * @see EndpointServiceLocation
     */
    String getEndpointServiceProtocol();

    /**
     * Optional endpoint metadata that is relevant to the service as key value pairs. Notice that the metadata is not
     * supposed to contain sensitive security details such as access token, api keys, or passwords. Only share
     * information that can be safely accessed and written to logs.
     *
     * @return optional metadata or null if no data
     * @see    EndpointServiceLocation
     */
    Map getEndpointServiceMetadata();

    /**
     * Dumps the event message as XML using the {@link #ROOT_TAG} as root tag.
     * 

* The timestamp tag is formatted in the format defined by {@link #TIMESTAMP_FORMAT} * * @param indent number of spaces to indent * @return xml representation of this event */ String toXml(int indent); /** * Dumps the event message as JSon. * * @param indent number of spaces to indent * @return JSon representation of this event */ String toJSon(int indent); /** * The event message as an org.apache.camel.util.json.JsonObject object. */ Map asJSon(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy