@ManagedResource public class WireTap extends Object implements ChannelInterceptor, ManageableLifecycle, VetoCapableInterceptor, BeanFactoryAware
ChannelInterceptor
that publishes a copy of the intercepted message
to a secondary target while still sending the original message to the main channel.Constructor and Description |
---|
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 . |
WireTap(String channelName)
Create a new wire tap based on the MessageChannel name and
with no
MessageSelector . |
WireTap(String channelName,
MessageSelector selector)
Create a new wire tap with the provided
MessageSelector . |
Modifier and Type | Method and Description |
---|---|
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 |
setBeanFactory(BeanFactory beanFactory) |
void |
setTimeout(long timeout)
Specify the timeout value for sending to the intercepting target.
|
boolean |
shouldIntercept(String beanName,
InterceptableChannel channel) |
void |
start()
Restart the wire tap if it has been stopped.
|
void |
stop()
Stop the wire tap.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
afterReceiveCompletion, afterSendCompletion, postReceive, postSend, preReceive
public WireTap(MessageChannel channel)
MessageSelector
.channel
- the MessageChannel to which intercepted messages will be sentpublic WireTap(MessageChannel channel, MessageSelector selector)
MessageSelector
.channel
- the channel to which intercepted messages will be sentselector
- the selector that must accept a message for it to be
sent to the intercepting channelpublic WireTap(String channelName)
MessageSelector
.channelName
- the name of the target MessageChannel
to which intercepted messages will be sentpublic WireTap(String channelName, MessageSelector selector)
MessageSelector
.channelName
- the name of the target MessageChannel
to which intercepted messages will be sent.selector
- the selector that must accept a message for it to be
sent to the intercepting channelpublic void setTimeout(long timeout)
timeout
- the timeout in millisecondspublic void setBeanFactory(BeanFactory beanFactory) throws BeansException
setBeanFactory
in interface BeanFactoryAware
BeansException
@ManagedAttribute public boolean isRunning()
isRunning
in interface Lifecycle
isRunning
in interface ManageableLifecycle
@ManagedOperation public void start()
start
in interface Lifecycle
start
in interface ManageableLifecycle
@ManagedOperation public void stop()
start()
.stop
in interface Lifecycle
stop
in interface ManageableLifecycle
public Message<?> preSend(Message<?> message, MessageChannel channel)
MessageSelector
,
send it to the secondary target. If this wire tap's MessageSelector
is
null
, it will accept all messages.preSend
in interface ChannelInterceptor
public boolean shouldIntercept(String beanName, InterceptableChannel channel)
shouldIntercept
in interface VetoCapableInterceptor
beanName
- The channel name.channel
- The channel that is about to be intercepted.