Class DefaultCamelReactiveStreamsService

java.lang.Object
org.apache.camel.support.service.BaseService
org.apache.camel.support.service.ServiceSupport
org.apache.camel.component.reactive.streams.engine.DefaultCamelReactiveStreamsService
All Implemented Interfaces:
AutoCloseable, CamelReactiveStreamsService, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.spi.HasCamelContext, org.apache.camel.spi.HasId, org.apache.camel.StatefulService, org.apache.camel.SuspendableService

@ManagedResource(description="Managed CamelReactiveStreamsService") public class DefaultCamelReactiveStreamsService extends org.apache.camel.support.service.ServiceSupport implements CamelReactiveStreamsService
The default implementation of the reactive streams service.
  • Field Summary

    Fields inherited from class org.apache.camel.support.service.BaseService

    BUILT, FAILED, INITIALIZED, INITIALIZING, lock, NEW, SHUTDOWN, SHUTTING_DOWN, STARTED, STARTING, status, STOPPED, STOPPING, SUSPENDED, SUSPENDING
  • Constructor Summary

    Constructors
    Constructor
    Description
    DefaultCamelReactiveStreamsService(org.apache.camel.CamelContext context, ReactiveStreamsEngineConfiguration configuration)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    Used by Camel to associate the subscriber of the stream with the given name to a specific Camel consumer.
    void
    Used by Camel to associate the publisher of the stream with the given name to a specific Camel producer.
     
     
    void
    Used by Camel to detach the existing consumer from the given stream.
    void
    Used by Camel to detach the existing producer from the given stream.
    protected void
     
    protected org.reactivestreams.Publisher<org.apache.camel.Exchange>
    doRequest(String name, org.apache.camel.Exchange data)
     
    protected void
     
    protected void
     
    org.reactivestreams.Publisher<org.apache.camel.Exchange>
    from(String uri)
    Creates a new stream from the endpoint URI (used as Camel Consumer) and returns the associated Publisher.
    <T> org.reactivestreams.Publisher<T>
    from(String uri, Class<T> type)
    Creates a new stream of the given type from the endpoint URI (used as Camel Consumer) and returns the associated Publisher.
    org.reactivestreams.Publisher<org.apache.camel.Exchange>
    Returns the publisher associated to the given stream name.
    <T> org.reactivestreams.Publisher<T>
    fromStream(String name, Class<T> cls)
    Returns the publisher associated to the given stream name.
    org.apache.camel.CamelContext
     
     
    <T> void
    process(String uri, Class<T> type, Function<? super org.reactivestreams.Publisher<T>,?> processor)
    Adds a processing step at the specified endpoint uri (usually a "direct:name") that delegates to the given reactive processor.
    void
    process(String uri, Function<? super org.reactivestreams.Publisher<org.apache.camel.Exchange>,?> processor)
    Adds a processing step at the specified endpoint uri (usually a "direct:name") that delegates to the given reactive processor.
    void
    sendCamelExchange(String name, org.apache.camel.Exchange exchange)
    Used by Camel to send the exchange to all active subscriptions on the given stream.
    Returns the subscriber associated to the given stream name.
    <T> org.reactivestreams.Subscriber<T>
    streamSubscriber(String name, Class<T> type)
    Returns the subscriber associated to the given stream name.
    org.reactivestreams.Subscriber<org.apache.camel.Exchange>
    Creates a new route that pushes data to the endpoint URI and returns the associated Subscriber.
    <T> org.reactivestreams.Subscriber<T>
    subscriber(String uri, Class<T> type)
    Creates a new route that pushes data to the endpoint URI and returns the associated Subscriber.
    Function<Object,org.reactivestreams.Publisher<org.apache.camel.Exchange>>
    to(String uri)
    Creates a new route that uses the endpoint URI as producer, and returns a function that pushes the data into the route and returns the Publisher that holds the resulting exchange or the error.
    <T> Function<Object,org.reactivestreams.Publisher<T>>
    to(String uri, Class<T> type)
    Creates a new route that uses the endpoint URI as producer, and returns a function that pushes the data into the route and returns the Publisher that holds the exchange output or an error.
    org.reactivestreams.Publisher<org.apache.camel.Exchange>
    to(String uri, Object data)
    Creates a new route that uses the endpoint URI as producer, pushes the given data to the route and returns a Publisher that will eventually return the resulting exchange or an error.
    <T> org.reactivestreams.Publisher<T>
    to(String uri, Object data, Class<T> type)
    Creates a new route that uses the endpoint URI as producer, pushes the given data to the route and returns a Publisher that will eventually return the exchange output or an error.
    Function<?,? extends org.reactivestreams.Publisher<org.apache.camel.Exchange>>
    Returns a function that pushes data into the specified Camel stream and returns a Publisher (mono) holding the resulting exchange or an error.
    <T> Function<Object,org.reactivestreams.Publisher<T>>
    toStream(String name, Class<T> type)
    Returns a function that pushes data into the specified Camel stream and returns a Publisher (mono) holding the exchange output or an error.
    org.reactivestreams.Publisher<org.apache.camel.Exchange>
    toStream(String name, Object data)
    Pushes the given data into the specified Camel stream and returns a Publisher (mono) holding the resulting exchange or an error.
    <T> org.reactivestreams.Publisher<T>
    toStream(String name, Object data, Class<T> type)
    Pushes the given data into the specified Camel stream and returns a Publisher (mono) holding the exchange output or an error.

    Methods inherited from class org.apache.camel.support.service.BaseService

    build, doBuild, doFail, doLifecycleChange, doResume, doShutdown, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, shutdown, start, stop, suspend

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.camel.Service

    build, close, init, start, stop

    Methods inherited from interface org.apache.camel.ShutdownableService

    shutdown

    Methods inherited from interface org.apache.camel.StatefulService

    getStatus, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspending

    Methods inherited from interface org.apache.camel.SuspendableService

    isSuspended, resume, suspend
  • Constructor Details

    • DefaultCamelReactiveStreamsService

      public DefaultCamelReactiveStreamsService(org.apache.camel.CamelContext context, ReactiveStreamsEngineConfiguration configuration)
  • Method Details

    • getId

      public String getId()
      Specified by:
      getId in interface org.apache.camel.spi.HasId
    • getCamelContext

      public org.apache.camel.CamelContext getCamelContext()
      Specified by:
      getCamelContext in interface org.apache.camel.spi.HasCamelContext
    • doInit

      protected void doInit()
      Overrides:
      doInit in class org.apache.camel.support.service.BaseService
    • 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
    • fromStream

      public org.reactivestreams.Publisher<org.apache.camel.Exchange> fromStream(String name)
      Description copied from interface: CamelReactiveStreamsService
      Returns the publisher associated to the given stream name. A publisher can be used to push Camel exchanges to reactive-streams subscribers.
      Specified by:
      fromStream in interface CamelReactiveStreamsService
      Parameters:
      name - the stream name
      Returns:
      the stream publisher
    • fromStream

      public <T> org.reactivestreams.Publisher<T> fromStream(String name, Class<T> cls)
      Description copied from interface: CamelReactiveStreamsService
      Returns the publisher associated to the given stream name. A publisher can be used to push Camel exchange to external reactive-streams subscribers. The publisher converts automatically exchanges to the given type.
      Specified by:
      fromStream in interface CamelReactiveStreamsService
      Type Parameters:
      T - the type of items emitted by the publisher
      Parameters:
      name - the stream name
      cls - the type of the emitted items
      Returns:
      the publisher associated to the stream
    • streamSubscriber

      public ReactiveStreamsCamelSubscriber streamSubscriber(String name)
      Description copied from interface: CamelReactiveStreamsService
      Returns the subscriber associated to the given stream name. A subscriber can be used to push items coming from external reactive-streams publishers to Camel routes.
      Specified by:
      streamSubscriber in interface CamelReactiveStreamsService
      Parameters:
      name - the stream name
      Returns:
      the subscriber associated with the stream
    • streamSubscriber

      public <T> org.reactivestreams.Subscriber<T> streamSubscriber(String name, Class<T> type)
      Description copied from interface: CamelReactiveStreamsService
      Returns the subscriber associated to the given stream name. A subscriber can be used to push items coming from external reactive-streams publishers to Camel routes. The subscriber converts automatically items of the given type to exchanges before pushing them.
      Specified by:
      streamSubscriber in interface CamelReactiveStreamsService
      Type Parameters:
      T - the type of items accepted by the subscriber
      Parameters:
      name - the stream name
      type - the publisher converts automatically exchanges to the given type.
      Returns:
      the subscriber associated with the stream
    • sendCamelExchange

      public void sendCamelExchange(String name, org.apache.camel.Exchange exchange)
      Description copied from interface: CamelReactiveStreamsService
      Used by Camel to send the exchange to all active subscriptions on the given stream. The callback is used to signal that the exchange has been delivered to the subscribers.
      Specified by:
      sendCamelExchange in interface CamelReactiveStreamsService
      Parameters:
      name - the stream name
      exchange - the exchange to be forwarded to the external subscribers
    • toStream

      public org.reactivestreams.Publisher<org.apache.camel.Exchange> toStream(String name, Object data)
      Description copied from interface: CamelReactiveStreamsService
      Pushes the given data into the specified Camel stream and returns a Publisher (mono) holding the resulting exchange or an error.
      Specified by:
      toStream in interface CamelReactiveStreamsService
      Parameters:
      name - the stream name
      data - the data to push
      Returns:
      a publisher with the resulting exchange
    • toStream

      public Function<?,? extends org.reactivestreams.Publisher<org.apache.camel.Exchange>> toStream(String name)
      Description copied from interface: CamelReactiveStreamsService
      Returns a function that pushes data into the specified Camel stream and returns a Publisher (mono) holding the resulting exchange or an error. This is a curryied version of CamelReactiveStreamsService.toStream(String, Object).
      Specified by:
      toStream in interface CamelReactiveStreamsService
      Parameters:
      name - the stream name
      Returns:
      a function that returns a publisher with the resulting exchange
    • toStream

      public <T> org.reactivestreams.Publisher<T> toStream(String name, Object data, Class<T> type)
      Description copied from interface: CamelReactiveStreamsService
      Pushes the given data into the specified Camel stream and returns a Publisher (mono) holding the exchange output or an error.
      Specified by:
      toStream in interface CamelReactiveStreamsService
      Type Parameters:
      T - the generic type of the resulting Publisher
      Parameters:
      name - the stream name
      data - the data to push
      type - the type to which the output should be converted
      Returns:
      a publisher with the resulting data
    • doRequest

      protected org.reactivestreams.Publisher<org.apache.camel.Exchange> doRequest(String name, org.apache.camel.Exchange data)
    • toStream

      public <T> Function<Object,org.reactivestreams.Publisher<T>> toStream(String name, Class<T> type)
      Description copied from interface: CamelReactiveStreamsService
      Returns a function that pushes data into the specified Camel stream and returns a Publisher (mono) holding the exchange output or an error. This is a curryied version of CamelReactiveStreamsService.toStream(String, Object, Class).
      Specified by:
      toStream in interface CamelReactiveStreamsService
      Type Parameters:
      T - the generic type of the resulting Publisher
      Parameters:
      name - the stream name
      type - the type to which the output should be converted
      Returns:
      a function that returns a publisher with the resulting data
    • from

      public org.reactivestreams.Publisher<org.apache.camel.Exchange> from(String uri)
      Description copied from interface: CamelReactiveStreamsService
      Creates a new stream from the endpoint URI (used as Camel Consumer) and returns the associated Publisher. If a stream has already been created, the existing Publisher is returned.
      Specified by:
      from in interface CamelReactiveStreamsService
      Parameters:
      uri - the consumer uri
      Returns:
      the publisher associated to the uri
    • from

      public <T> org.reactivestreams.Publisher<T> from(String uri, Class<T> type)
      Description copied from interface: CamelReactiveStreamsService
      Creates a new stream of the given type from the endpoint URI (used as Camel Consumer) and returns the associated Publisher. If a stream has already been created, the existing Publisher is returned.
      Specified by:
      from in interface CamelReactiveStreamsService
      Type Parameters:
      T - the type to which Camel should convert exchanges to
      Parameters:
      uri - the consumer uri
      type - the type of items emitted by the publisher
      Returns:
      the publisher associated to the uri
    • subscriber

      public org.reactivestreams.Subscriber<org.apache.camel.Exchange> subscriber(String uri)
      Description copied from interface: CamelReactiveStreamsService
      Creates a new route that pushes data to the endpoint URI and returns the associated Subscriber. This method always create a new stream.
      Specified by:
      subscriber in interface CamelReactiveStreamsService
      Parameters:
      uri - the target uri
      Returns:
      the subscriber associated to the uri
    • subscriber

      public <T> org.reactivestreams.Subscriber<T> subscriber(String uri, Class<T> type)
      Description copied from interface: CamelReactiveStreamsService
      Creates a new route that pushes data to the endpoint URI and returns the associated Subscriber. This method always create a new stream.
      Specified by:
      subscriber in interface CamelReactiveStreamsService
      Type Parameters:
      T - the type from which Camel should convert data to exchanges
      Parameters:
      uri - the target uri
      type - the type of items that the subscriber can receive
      Returns:
      the subscriber associated to the uri
    • to

      public org.reactivestreams.Publisher<org.apache.camel.Exchange> to(String uri, Object data)
      Description copied from interface: CamelReactiveStreamsService
      Creates a new route that uses the endpoint URI as producer, pushes the given data to the route and returns a Publisher that will eventually return the resulting exchange or an error.
      Specified by:
      to in interface CamelReactiveStreamsService
      Parameters:
      uri - the producer uri
      data - the data to push
      Returns:
      a publisher with the resulting exchange
    • to

      public Function<Object,org.reactivestreams.Publisher<org.apache.camel.Exchange>> to(String uri)
      Description copied from interface: CamelReactiveStreamsService
      Creates a new route that uses the endpoint URI as producer, and returns a function that pushes the data into the route and returns the Publisher that holds the resulting exchange or the error. This is a curryied version of CamelReactiveStreamsService.to(String, Object).
      Specified by:
      to in interface CamelReactiveStreamsService
      Parameters:
      uri - the producer uri
      Returns:
      a function that returns a publisher with the resulting exchange
    • to

      public <T> org.reactivestreams.Publisher<T> to(String uri, Object data, Class<T> type)
      Description copied from interface: CamelReactiveStreamsService
      Creates a new route that uses the endpoint URI as producer, pushes the given data to the route and returns a Publisher that will eventually return the exchange output or an error.
      Specified by:
      to in interface CamelReactiveStreamsService
      Type Parameters:
      T - the generic type of the resulting Publisher
      Parameters:
      uri - the producer uri
      data - the data to push
      type - the type to which the output should be converted
      Returns:
      a publisher with the resulting data
    • to

      public <T> Function<Object,org.reactivestreams.Publisher<T>> to(String uri, Class<T> type)
      Description copied from interface: CamelReactiveStreamsService
      Creates a new route that uses the endpoint URI as producer, and returns a function that pushes the data into the route and returns the Publisher that holds the exchange output or an error. This is a curryied version of CamelReactiveStreamsService.to(String, Object, Class).
      Specified by:
      to in interface CamelReactiveStreamsService
      Type Parameters:
      T - the generic type of the resulting Publisher
      Parameters:
      uri - the producer uri
      type - the type to which the output should be converted
      Returns:
      a function that returns a publisher with the resulting data
    • process

      public void process(String uri, Function<? super org.reactivestreams.Publisher<org.apache.camel.Exchange>,?> processor)
      Description copied from interface: CamelReactiveStreamsService
      Adds a processing step at the specified endpoint uri (usually a "direct:name") that delegates to the given reactive processor. The processor receives a Publisher of exchanges and returns an object. If the output of the processor is a Publisher, it will be unwrapped before delivering the result to the source route.
      Specified by:
      process in interface CamelReactiveStreamsService
      Parameters:
      uri - the uri where the processor should be attached
      processor - the reactive processor
    • process

      public <T> void process(String uri, Class<T> type, Function<? super org.reactivestreams.Publisher<T>,?> processor)
      Description copied from interface: CamelReactiveStreamsService
      Adds a processing step at the specified endpoint uri (usually a "direct:name") that delegates to the given reactive processor. The processor receives a Publisher of items of the given type and returns an object. If the output of the processor is a Publisher, it will be unwrapped before delivering the result to the source route.
      Specified by:
      process in interface CamelReactiveStreamsService
      Type Parameters:
      T - the generic type of the Publisher that should be processed
      Parameters:
      uri - the uri where the processor should be attached
      type - the type to which the body of the exchange should be converted
      processor - the reactive processor
    • attachCamelConsumer

      public ReactiveStreamsCamelSubscriber attachCamelConsumer(String name, ReactiveStreamsConsumer consumer)
      Description copied from interface: CamelReactiveStreamsService
      Used by Camel to associate the subscriber of the stream with the given name to a specific Camel consumer. This method is used to bind a Camel route to a reactive stream.
      Specified by:
      attachCamelConsumer in interface CamelReactiveStreamsService
      Parameters:
      name - the stream name
      consumer - the consumer of the route
      Returns:
      the associated subscriber
    • detachCamelConsumer

      public void detachCamelConsumer(String name)
      Description copied from interface: CamelReactiveStreamsService
      Used by Camel to detach the existing consumer from the given stream.
      Specified by:
      detachCamelConsumer in interface CamelReactiveStreamsService
      Parameters:
      name - the stream name
    • attachCamelProducer

      public void attachCamelProducer(String name, ReactiveStreamsProducer producer)
      Description copied from interface: CamelReactiveStreamsService
      Used by Camel to associate the publisher of the stream with the given name to a specific Camel producer. This method is used to bind a Camel route to a reactive stream.
      Specified by:
      attachCamelProducer in interface CamelReactiveStreamsService
      Parameters:
      name - the stream name
      producer - the producer of the route
    • detachCamelProducer

      public void detachCamelProducer(String name)
      Description copied from interface: CamelReactiveStreamsService
      Used by Camel to detach the existing producer from the given stream.
      Specified by:
      detachCamelProducer in interface CamelReactiveStreamsService
      Parameters:
      name - the stream name
    • camelSubscribers

      @ManagedOperation(description="Information about Camel Reactive subscribers") public TabularData camelSubscribers()
    • camelPublishers

      @ManagedOperation(description="Information about Camel Reactive publishers") public TabularData camelPublishers()