INT-676
This commit is contained in:
@@ -27,18 +27,25 @@
|
||||
</para>
|
||||
<para>
|
||||
The handler chain simplifies configuration while internally maintaining the same degree of loose coupling between
|
||||
components, and it is trivial to modify the configuration if at some point a non-linear arrangement is required.
|
||||
The chain will be expanded into a linear setup of the listed endpoints, separated by direct
|
||||
channels. The reply channel header will not be taken into account within the chain: only
|
||||
after the last handler is invoked will the resulting message be forwarded onto the reply channel or the chain's output
|
||||
channel. Because of this setup all handlers except the last require a <methodname>setOutputChannel</methodname>
|
||||
implementation. The last handler only needs an output channel if the outputChannel on the MessageHandlerChain is set.
|
||||
If this is not the case, the "replyChannel" header needs to be set on each message, so that it is clear where the
|
||||
message needs to go.
|
||||
components, and it is trivial to modify the configuration if at some point a non-linear arrangement is required.
|
||||
</para>
|
||||
<para>
|
||||
Internally, the chain will be expanded into a linear setup of the listed endpoints, separated by direct channels.
|
||||
The reply channel header will not be taken into account within the chain: only after the last handler is invoked
|
||||
will the resulting message be forwarded on to the reply channel or the chain's output channel. Because of this
|
||||
setup all handlers except the last require a <methodname>setOutputChannel</methodname> implementation. The last
|
||||
handler only needs an output channel if the outputChannel on the MessageHandlerChain is set.
|
||||
<note>
|
||||
<para>
|
||||
As with other endpoints, the output-channel is optional. If there is a reply Message at the end of the
|
||||
chain, the output-channel takes precedence, but if not available, the chain handler will check for a
|
||||
reply channel header on the inbound Message.
|
||||
</para>
|
||||
</note>
|
||||
</para>
|
||||
<para>
|
||||
In most cases there is no need to implement MessageHandlers yourself. The next section will focus on namespace
|
||||
support for the chain element. Most Spring Integration enpoints like Service Activators and Transformers are
|
||||
support for the chain element. Most Spring Integration endpoints, like Service Activators and Transformers, are
|
||||
suitable for use within a <classname>MessageHandlerChain</classname>.
|
||||
</para>
|
||||
</section>
|
||||
@@ -47,8 +54,8 @@
|
||||
<title>The <chain> Element</title>
|
||||
<para>
|
||||
The <chain> element provides an 'input-channel' attribute, and if the last element in the chain is capable
|
||||
of producing reply messages, it may optionally provide an 'output-channel' attribute. The sub-elements are then
|
||||
filters, transformers, splitters, and service-activators. The last element may also be a router or aggregator.
|
||||
of producing reply messages (optional), it also supports an 'output-channel' attribute. The sub-elements are then
|
||||
filters, transformers, splitters, and service-activators. The last element may also be a router.
|
||||
<programlisting language="xml"><![CDATA[ <chain input-channel="input" output-channel="output">
|
||||
<filter ref="someSelector" throw-exception-on-rejection="true"/>
|
||||
<header-enricher error-channel="customErrorChannel">
|
||||
@@ -57,9 +64,12 @@
|
||||
<service-activator ref="someService" method="someMethod"/>
|
||||
</chain>]]></programlisting>
|
||||
</para>
|
||||
The <header-enricher> element used in the above example will set a message header with name "foo" and value "bar" on the message.
|
||||
A header enricher is a specialization of Transformer that touches only header values. You could obtain the same result by
|
||||
implementing a MessageHandler that did the header modifications and wiring that as a bean.
|
||||
<para>
|
||||
The <header-enricher> element used in the above example will set a message header with name "foo" and
|
||||
value "bar" on the message. A header enricher is a specialization of Transformer that touches only header
|
||||
values. You could obtain the same result by implementing a MessageHandler that did the header modifications
|
||||
and wiring that as a bean.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
Reference in New Issue
Block a user