Files
spring-integration/src/reference/docbook/polling-consumer.xml
Gunnar Hillert dc1d1868d9 INT-2430 - Improve Polling Consumer Documentation
INT-2425 - Poller: Document the Ability to Change Polling Rate at Runtime

For reference see:

* https://jira.springsource.org/browse/INT-2430
* https://jira.springsource.org/browse/INT-2425

INT-2430 - Code Review - Minor spelling error fix
in src/reference/docbook/endpoint.xml

INT-2430 - Code Review - Doc updates

* Add more documentation around the dynamic poller sample
* Standardize Endpoint chapter so that for emphasis of properties the <emphasis/> docbook element is used rather than quotes.

Polishing
2012-03-09 11:08:21 -05:00

72 lines
4.5 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="polling-consumer"
xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Poller (Polling Consumer)</title>
<para>
When Message Endpoints (Channel Adapters) are connected to channels and
instantiated, they produce one of the following 2 instances:
</para>
<itemizedlist>
<listitem><ulink url="http://static.springsource.org/spring-integration/api/org/springframework/integration/endpoint/PollingConsumer.html">PollingConsumer</ulink></listitem>
<listitem><ulink url="http://static.springsource.org/spring-integration/api/org/springframework/integration/endpoint/EventDrivenConsumer.html">EventDrivenConsumer</ulink></listitem>
</itemizedlist>
<para>
The actual implementation depends on which type of channel these Endpoints
are connected to. A channel adapter connected to a channel that implements
the <interfacename><ulink url="http://static.springsource.org/spring-integration/api/org/springframework/integration/core/SubscribableChannel.html">org.springframework.integration.core.SubscribableChannel</ulink></interfacename>
interface will produce an instance of <classname>EventDrivenConsumer</classname>.
On the other hand, a channel adapter connected to a channel that implements the
<interfacename><ulink url="http://static.springsource.org/spring-integration/api/org/springframework/integration/core/PollableChannel.html">org.springframework.integration.core.PollableChannel</ulink></interfacename>
interface (e.g. a QueueChannel) will produce an instance of <classname>PollingConsumer</classname>.
</para>
<para>
Polling Consumers allow Spring Integration components to actively poll for
Messages, rather than to process Messages in an event-driven manner.
</para>
<para>
They represent a critical cross cutting concern in many
messaging scenarios. In Spring Integration, Polling Consumers are based
on the pattern with the same name, which is described in the book
"Enterprise Integration Patterns" by Gregor Hohpe and Bobby Woolf. You
can find a description of the pattern on the book's website at:
</para>
<itemizedlist>
<listitem><ulink url="http://www.enterpriseintegrationpatterns.com/PollingConsumer.html">
http://www.enterpriseintegrationpatterns.com/PollingConsumer.html
</ulink></listitem>
</itemizedlist>
<para>
Furthermore, in Spring Integration a second variation of the Polling Consumer
pattern exists. When Inbound Channel Adapters are being used, these adapters
are often wrapped by a <classname>SourcePollingChannelAdapter</classname>.
For example, when retrieving messages from a remote FTP Server location,
the adapter described in <xref linkend="ftp-inbound" />
is configured with a <emphasis>poller</emphasis> to retrieve messages periodically.
So, when components are configured with Pollers, the resulting instances are
of one of the following types:
</para>
<itemizedlist>
<listitem><ulink url="http://static.springsource.org/spring-integration/api/org/springframework/integration/endpoint/PollingConsumer.html">PollingConsumer</ulink></listitem>
<listitem><ulink url="http://static.springsource.org/spring-integration/api/org/springframework/integration/endpoint/SourcePollingChannelAdapter.html">SourcePollingChannelAdapter</ulink></listitem>
</itemizedlist>
<para>
This means, Pollers are used in both inbound and outbound messaging scenarios.
Here are some use-cases that illustrate the scenarios in which Pollers are
used:
</para>
<itemizedlist>
<listitem>Polling certain external systems such as FTP Servers, Databases, Web Services</listitem>
<listitem>Polling internal (pollable) Message Channels</listitem>
<listitem>Polling internal services (E.g. repeatedly execute methods on a Java class)</listitem>
</itemizedlist>
<para>
This chapter is meant to only give a high-level overview regarding Polling Consumers
and how they fit into the concept of message channels - <xref linkend="channel"/> and
channel adapters -
<xref linkend="channel-adapter"/>. For more in-depth information regarding
Messaging Endpoints in general and Polling Consumers in particular, please see
<xref linkend="endpoint"/>.
</para>
</section>