org.springframework.integration.channel.interceptor
Class WireTap

java.lang.Object
  extended by org.springframework.integration.channel.interceptor.ChannelInterceptorAdapter
      extended by org.springframework.integration.channel.interceptor.WireTap
All Implemented Interfaces:
Lifecycle, ChannelInterceptor

@ManagedResource
public class WireTap
extends ChannelInterceptorAdapter
implements Lifecycle

A ChannelInterceptor that publishes a copy of the intercepted message to a secondary target while still sending the original message to the main channel.


Constructor Summary
WireTap(MessageChannel channel)
          Create a new wire tap with no MessageSelector.
WireTap(MessageChannel channel, MessageSelector selector)
          Create a new wire tap with the provided MessageSelector.
 
Method Summary
 boolean isRunning()
          Check whether the wire tap is currently running.
 Message<?> preSend(Message<?> message, MessageChannel channel)
          Intercept the Message and, if accepted by the MessageSelector, send it to the secondary target.
 void setTimeout(long timeout)
          Specify the timeout value for sending to the intercepting target.
 void start()
          Restart the wire tap if it has been stopped.
 void stop()
          Stop the wire tap.
 
Methods inherited from class org.springframework.integration.channel.interceptor.ChannelInterceptorAdapter
postReceive, postSend, preReceive
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WireTap

public WireTap(MessageChannel channel)
Create a new wire tap with no MessageSelector.

Parameters:
channel - the MessageChannel to which intercepted messages will be sent

WireTap

public WireTap(MessageChannel channel,
               MessageSelector selector)
Create a new wire tap with the provided MessageSelector.

Parameters:
channel - the channel to which intercepted messages will be sent
selector - the selector that must accept a message for it to be sent to the intercepting channel
Method Detail

setTimeout

public void setTimeout(long timeout)
Specify the timeout value for sending to the intercepting target.

Parameters:
timeout - the timeout in milliseconds

isRunning

@ManagedAttribute
public boolean isRunning()
Check whether the wire tap is currently running.

Specified by:
isRunning in interface Lifecycle

start

@ManagedOperation
public void start()
Restart the wire tap if it has been stopped. It is running by default.

Specified by:
start in interface Lifecycle

stop

@ManagedOperation
public void stop()
Stop the wire tap. To restart, invoke start().

Specified by:
stop in interface Lifecycle

preSend

public Message<?> preSend(Message<?> message,
                          MessageChannel channel)
Intercept the Message and, if accepted by the MessageSelector, send it to the secondary target. If this wire tap's MessageSelector is null, it will accept all messages.

Specified by:
preSend in interface ChannelInterceptor
Overrides:
preSend in class ChannelInterceptorAdapter