Class BacklogDebugger

  • All Implemented Interfaces:
    AutoCloseable, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.StatefulService, org.apache.camel.SuspendableService

    public final class BacklogDebugger
    extends org.apache.camel.support.service.ServiceSupport
    A Debugger that has easy debugging functionality which can be used from JMX with ManagedBacklogDebuggerMBean.

    This implementation allows to set breakpoints (with or without a condition) and inspect the Exchange dumped in XML in BacklogTracerEventMessage format. There is operations to resume suspended breakpoints to continue routing the Exchange. There is also step functionality so you can single step a given Exchange.

    This implementation will only break the first Exchange that arrives to a breakpoint. If Camel routes using concurrency then sub-sequent Exchange will continue to be routed, if there breakpoint already holds a suspended Exchange.

    • Method Detail

      • createDebugger

        public static BacklogDebugger createDebugger​(org.apache.camel.CamelContext context)
        Creates a new backlog debugger.
        Parameters:
        context - Camel context
        Returns:
        a new backlog debugger
      • getBacklogDebugger

        public static BacklogDebugger getBacklogDebugger​(org.apache.camel.CamelContext context)
        A helper method to return the BacklogDebugger instance if one is enabled
        Returns:
        the backlog debugger or null if none can be found
      • getLoggingLevel

        public String getLoggingLevel()
      • setLoggingLevel

        public void setLoggingLevel​(String level)
      • enableDebugger

        public void enableDebugger()
      • disableDebugger

        public void disableDebugger()
      • isEnabled

        public boolean isEnabled()
      • hasBreakpoint

        public boolean hasBreakpoint​(String nodeId)
      • isSingleStepMode

        public boolean isSingleStepMode()
      • addBreakpoint

        public void addBreakpoint​(String nodeId)
      • addConditionalBreakpoint

        public void addConditionalBreakpoint​(String nodeId,
                                             String language,
                                             String predicate)
      • removeBreakpoint

        public void removeBreakpoint​(String nodeId)
      • removeAllBreakpoints

        public void removeAllBreakpoints()
      • getBreakpoints

        public Set<String> getBreakpoints()
      • resumeBreakpoint

        public void resumeBreakpoint​(String nodeId)
      • setMessageBodyOnBreakpoint

        public void setMessageBodyOnBreakpoint​(String nodeId,
                                               Object body)
      • setMessageBodyOnBreakpoint

        public void setMessageBodyOnBreakpoint​(String nodeId,
                                               Object body,
                                               Class<?> type)
      • removeMessageBodyOnBreakpoint

        public void removeMessageBodyOnBreakpoint​(String nodeId)
      • setMessageHeaderOnBreakpoint

        public void setMessageHeaderOnBreakpoint​(String nodeId,
                                                 String headerName,
                                                 Object value)
                                          throws org.apache.camel.NoTypeConversionAvailableException
        Throws:
        org.apache.camel.NoTypeConversionAvailableException
      • setMessageHeaderOnBreakpoint

        public void setMessageHeaderOnBreakpoint​(String nodeId,
                                                 String headerName,
                                                 Object value,
                                                 Class<?> type)
                                          throws org.apache.camel.NoTypeConversionAvailableException
        Throws:
        org.apache.camel.NoTypeConversionAvailableException
      • getFallbackTimeout

        public long getFallbackTimeout()
      • setFallbackTimeout

        public void setFallbackTimeout​(long fallbackTimeout)
      • removeMessageHeaderOnBreakpoint

        public void removeMessageHeaderOnBreakpoint​(String nodeId,
                                                    String headerName)
      • resumeAll

        public void resumeAll()
      • stepBreakpoint

        public void stepBreakpoint​(String nodeId)
      • step

        public void step()
      • getSuspendedBreakpointNodeIds

        public Set<String> getSuspendedBreakpointNodeIds()
      • getSuspendedExchange

        public org.apache.camel.Exchange getSuspendedExchange​(String id)
        Gets the exchanged suspended at the given breakpoint id or null if there is none at that id.
        Parameters:
        id - - node id for the breakpoint
        Returns:
        The suspended exchange or null if there isn't one suspended at the given breakpoint.
      • disableBreakpoint

        public void disableBreakpoint​(String nodeId)
      • enableBreakpoint

        public void enableBreakpoint​(String nodeId)
      • getBodyMaxChars

        public int getBodyMaxChars()
      • setBodyMaxChars

        public void setBodyMaxChars​(int bodyMaxChars)
      • isBodyIncludeStreams

        public boolean isBodyIncludeStreams()
      • setBodyIncludeStreams

        public void setBodyIncludeStreams​(boolean bodyIncludeStreams)
      • isBodyIncludeFiles

        public boolean isBodyIncludeFiles()
      • setBodyIncludeFiles

        public void setBodyIncludeFiles​(boolean bodyIncludeFiles)
      • dumpTracedMessagesAsXml

        public String dumpTracedMessagesAsXml​(String nodeId)
      • getDebugCounter

        public long getDebugCounter()
      • resetDebugCounter

        public void resetDebugCounter()
      • beforeProcess

        public boolean beforeProcess​(org.apache.camel.Exchange exchange,
                                     org.apache.camel.Processor processor,
                                     org.apache.camel.NamedNode definition)
      • afterProcess

        public boolean afterProcess​(org.apache.camel.Exchange exchange,
                                    org.apache.camel.Processor processor,
                                    org.apache.camel.NamedNode definition,
                                    long timeTaken)
      • doStart

        protected void doStart()
                        throws Exception
        Overrides:
        doStart in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • doStop

        protected void doStop()
                       throws Exception
        Overrides:
        doStop in class org.apache.camel.support.service.BaseService
        Throws:
        Exception