org.jboss.soa.esb.actions
Class ContentBasedWiretap
java.lang.Object
org.jboss.soa.esb.actions.AbstractActionLifecycle
org.jboss.soa.esb.actions.AbstractActionPipelineProcessor
org.jboss.soa.esb.actions.ContentBasedWiretap
- All Implemented Interfaces:
- ActionLifecycle, ActionPipelineProcessor
- Direct Known Subclasses:
- ContentBasedRouter
public class ContentBasedWiretap
- extends AbstractActionPipelineProcessor
ContentBasedWirtap implements the WireTap pattern.
The WireTap is an Enterprise Integration Pattern (EIP) where a copy of the message is
sent to a control channel.
The CBWT is identical in functionality to the ContentBasedRouter,
however it does not terminate the pipeline which makes it suitable to be used as a WireTap.
Configuration Example:
<action class="org.jboss.soa.esb.actions.ContentBasedRouter" name="MyAction">
<property name="ruleSet" value="OrderDiscountOnMultipleOrders.drl" />
<property name="ruleReload" value="false" />
<property name="ruleFireMethod" value="FIRE_ALL_RULES" />
<property name="ruleAuditType" value="THREADED_FILE" />
<property name="ruleAuditFile" value="/tmp/event" />
<property name="ruleAuditInterval" value="1000" />
<property name="ruleClockType" value="REALTIME" />
<property name="ruleEventProcessingType" value="STREAM" />
<property name="stateful" value="true" />
<property name="object-paths">
<object-path esb="body.TheOrderHeader" />
<object-path esb="body.TheCustomer" />
<object-path esb="body.TheOrderStatus" entry-point="OrderStatusEntry" />
<object-path esb="body.TheOrderInfo" entry-point="OrderInfoEntry" />
</property>
<property name="channels">
<!-- chan1 and chan2 are equivalent (but timeout only applies if async == false) -->
<send-to channel-name="chan1" service-category="cat1" service-name="svc1" />
<send-to channel-name="chan2" channel-class="org.jboss.soa.esb.services.rules.ServiceChannel" service-category="cat1" service-name="svc1" async="true" timeout="30000" set-payload-location="org.jboss.soa.esb.message.defaultEntry" />
<!-- a custom channel -->
<send-to channel-name="chan3" channel-class="com.example.MyChannel" />
</property>
<property name="destinations">
<route-to destination-name="blue" service-category="BlueTeam" service-name="GoBlue" />
<route-to destination-name="red" service-category="RedTeam" service-name="GoRed" />
<route-to destination-name="green" service-category="GreenTeam" service-name="GoGreen" />
</property>
</action>
Property description:
- class action class, one of : org.jboss.soa.esb.actions.ContentBasedRouter, org.jboss.soa.esb.actions.ContentBasedWireTap,
or org.jboss.soa.esb.actions.MessageFilter
- ruleSet Name of the filename containing the Drools ruleSet.
- ruleLanguage Optional reference to a file containing the definition of a Domain Specific Language to be used for evaluating
the rule set.
- ruleReload Optional property which can be to true to enable 'hot' redeployment of rule sets.
- ruleFireMethod Optional property that defines, for StatefulKnowledgeSessions, if fireAllRules() or fireUntilHalt() should be called. Possible values are FIRE_ALL_RULES (the default) or FIRE_UNTIL_HALT.
- ruleAuditType Optional property that defines the type of KnowledgeRuntimeLogger used (CONSOLE, FILE, THREADED_FILE). If not defined and neither is ruleAuditFile, no auditing is done. If not defined but ruleAuditFile is, the assumption is THREADED_FILE.
- ruleAuditFile Optional property that defines the file path for a ruleAuditType of FILE or THREADED_FILE ("event" is the default, and ".log" is always appended).
- ruleAuditInterval Optional property that defines the interval (in milliseconds) for a ruleAuditType of THREADED_FILE (1000 is the default).
- ruleclockType Optional property that defines the type of clock used (REALTIME, PSEUDO). Default is up to drools.
- ruleEventProcessingType Optional property that defines the type of event processing used (STREAM, CLOUD). Default is up to drools.
- stateful Optional property which tells the RuleService to use a stateful session where facts will be
remembered between invokations.
- object-paths Optional property to pass Message objects into Rule Services WorkingMemory. If an entry-point is specified, that will be placed in the StatefulSession's WorkingMemoryEntryPoint with the same name.
- channels A set of send-to properties each containing the logical name
of the destination along with the Service category and name
as referenced in the registry (if the default channel-class is used),
OR your own custom-class, which MUST implement org.drools.runtime.Channel,
, but MAY provide a setConfig(ConfigTree):void method.
The logical name is the name which should be used in the rule set.
- destinations A set of route-to properties each containing the logical name
of the destination along with the Service category and name
as referenced in the registry.
The logical name is the name
which should be used in the rule set.
- Author:
- schifest@heuristica.com.ar, kstam@jboss.com, kevin.conner@jboss.com, Daniel Bevenius
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ROUTE_TO_TAG
public static final java.lang.String ROUTE_TO_TAG
- See Also:
- Constant Field Values
OBJECT_PATH_TAG
public static final java.lang.String OBJECT_PATH_TAG
- See Also:
- Constant Field Values
OBJECT_PATH
public static final java.lang.String OBJECT_PATH
- See Also:
- Constant Field Values
ENTRY_POINT
public static final java.lang.String ENTRY_POINT
- See Also:
- Constant Field Values
DEFAULT_CBR_CLASS
public static final java.lang.String DEFAULT_CBR_CLASS
- See Also:
- Constant Field Values
_config
protected ConfigTree _config
_destinations
protected java.util.Map<java.lang.String,Service> _destinations
messageMulticaster
protected MessageMulticaster messageMulticaster
_cbrClass
protected java.lang.String _cbrClass
_ruleSet
protected java.lang.String _ruleSet
_ruleLanguage
protected java.lang.String _ruleLanguage
_ruleReload
protected boolean _ruleReload
_messagePathList
protected java.util.List<java.lang.String> _messagePathList
entryPointMap
protected java.util.Map<java.lang.String,java.util.List<java.lang.String>> entryPointMap
_mapper
protected ObjectMapper _mapper
_registry
protected Registry _registry
_cbr
protected ContentBasedRouter _cbr
_logger
protected static final org.apache.log4j.Logger _logger
ContentBasedWiretap
public ContentBasedWiretap(ConfigTree config)
throws ConfigurationException,
RegistryException,
MessageRouterException
- Throws:
ConfigurationException
RegistryException
MessageRouterException
initialise
public void initialise()
- Description copied from class:
AbstractActionLifecycle
- Initialise the action instance.
This method is called after the action instance has been instantiated so that
configuration options can be validated.
- Specified by:
initialise
in interface ActionLifecycle
- Overrides:
initialise
in class AbstractActionLifecycle
process
public Message process(Message message)
throws ActionProcessingException
- Router the message to one or more destinations, using the
ContentBasedRouter to figure out to which destinations it is going to
be routed too.
- Parameters:
message
-
- Returns:
- Message
- Throws:
ActionProcessingException
executeRules
protected java.util.List<Service> executeRules(Message message)
throws MessageRouterException
- Throws:
MessageRouterException
routeMessage
protected final void routeMessage(Message message,
java.util.List<Service> outgoingDestinations)
throws MessageRouterException
- Throws:
MessageRouterException
checkMyParms
protected void checkMyParms()
throws ConfigurationException
- Reading the piece of configTree specific to the CBR, and setting the
configuration.
- Throws:
ConfigurationException
buildDestinationKey
public static java.lang.String buildDestinationKey(ConfigTree destinationConfig)
throws ConfigurationException
- Throws:
ConfigurationException