public interface Message<T> {
T getPayload();
MessageHeaders getHeaders();
}
public final class MessageHeaders implements
Map<String, Object>, Serializable {
...
}
Object someValue = message.getHeaders().get("someKey");
CustomerId customerId = message.getHeaders()
.get("customerId", CustomerId.class);
new GenericMessage<T>(T payload);
new GenericMessage<T>(T payload,
Map<String, Object> headers);
ErrorMessage message = new ErrorMessage(someThrowable);
Throwable t = message.getPayload();
Message<String> message1 = MessageBuilder
.withPayload("test")
.setHeader("foo", "bar")
.build();
Message<String> message2 = MessageBuilder
.fromMessage(message1).build();
assertEquals("test", message2.getPayload());
assertEquals("bar", message2.getHeaders().get("foo"));
public interface MessageChannel {
boolean send(Message message);
boolean send(Message message, long timeout);
}
public interface PollableChannel extends MessageChannel {
Message<?> receive();
Message<?> receive(long timeout);
}
public interface SubscribableChannel extends
MessageChannel {
boolean subscribe(MessageHandler handler);
boolean unsubscribe(MessageHandler handler);
}
<int:channel id="bspChannel"/> <int:publish-subscribe-channel id="bspPSChannel"/>
<int:channel id="queueChannel">
<queue capacity="25"/>
</int:channel>
<int:poller fixed-rate="1000"/>
<int:poller id="weekdayPoller"
cron="*/10 * * * * MON-FRI"/>
<int:poller id="defaultPoller" default="true"
max-messages-per-poll="5" fixed-rate="3000"/>
<int:service-activator input-channel="new-order-channel"
ref="orderService" method="processNewOrder">
<int:poller fixed-delay="1000" />
</int:service-activator>
<bean id="orderService"
class="org.jsolutions.ex.si.OrderService" />
<int:header-enricher input-channel="in"
output-channel="out">
<int:priority value="HIGHEST"/>
<int:header name="foo" value="123" />
<int:header name="bar"
expression="payload.toUpperCase()" />
<int:header name="foobar" ref="aBean" />
</int:header-enricher>
package org.cafeteria;
public interface Cafe {
void placeOrder(Order order);
}
<int:gateway id="cafeService"
service-interface="org.cafeteria.Cafe"
default-request-channel="requestChannel"/>
public class NotSIAwareService {
@Resource(name = "cafeService")
Cafe cafeGateway;
public void someMethod() {
Order order = constructOrderInSomeWay();
cafeGateway.placeOrder(order);
}
...
<int:channel id="debugLog"/>
<int-stream:stdout-channel-adapter id="stdout"
channel="debugLog"/>
<int:service-activator id="stdoutLogger"
input-channel="debugLog">
<int-groovy:script>
println '=' * 140
headers.each { println it }
println payload
println '=' * 140
</int-groovy:script>
</int:service-activator>
<int:transformer id="testTransformer"
ref="testTransformerBean" method="transform"
input-channel="inChannel"
output-channel="outChannel"/>
<beans:bean id="testTransformerBean"
class="org.foo.TestTransformer" />
<int:payload-type-router input-channel="srcChannel">
<int:mapping type="org.foo.Invoice"
channel="invoiceChannel" />
<int:mapping type="org.foo.Credit"
channel="creditChannel" />
</int:payload-type-router>
<int:header-value-router input-channel="productChannel"
header-name="sellState">
<int:mapping value="buyable" channel="actChannel" />
<int:mapping value="soldout" channel="oldChannel" />
</int:header-value-router>
<int:filter input-channel="entryQueue" ref="selector"
output-channel="discoDancer"/>
<bean id="selector" class="org.disco.Tuersteher"/>
public class Tuersteher implements MessageSelector {
public boolean accept(Message<?> message) {
Person person = (Person)message.getPayload();
return (person.getAge() >= 18);
}
}
<int-feed:inbound-channel-adapter id="feedAdapter"
channel="feedChannel"
url="http://joachim.weinbrenner.name/feed/">
<int:poller fixed-rate="10000"
max-messages-per-poll="100" />
</int-feed:inbound-channel-adapter>
Hinweis: Payloads der erzeugten Messages sind in diesem Fall vom Typ com.sun.syndication.feed.synd.SyndEntry
<file:inbound-channel-adapter id="filesIn"
directory="file:${java.io.tmpdir}/input"
filename-pattern="*.txt">
<int:poller id="poller" fixed-delay="5000"/>
</file:inbound-channel-adapter>
<file:file-to-string-transformer
input-channel="filesIn" output-channel="strings"/>
<file:outbound-channel-adapter id="filesOut"
directory="file:${java.io.tmpdir}/output"/>
Use a spacebar or arrow keys to navigate