Updated the annotation-based Cafe Demo to use a bridge element since the annotated-methods in Barista now require a SubscribableChannel.

This commit is contained in:
Mark Fisher
2008-11-25 21:00:11 +00:00
parent dbc079ebe6
commit db09791428
3 changed files with 19 additions and 12 deletions

View File

@@ -47,7 +47,7 @@ public class Barista {
this.coldDrinkDelay = coldDrinkDelay;
}
@ServiceActivator(inputChannel="hotDrinks", outputChannel="preparedDrinks")
@ServiceActivator(inputChannel="hotDrinkBarista", outputChannel="preparedDrinks")
public Drink prepareHotDrink(OrderItem orderItem) {
try {
Thread.sleep(this.hotDrinkDelay);
@@ -62,7 +62,7 @@ public class Barista {
}
}
@ServiceActivator(inputChannel="coldDrinks", outputChannel="preparedDrinks")
@ServiceActivator(inputChannel="coldDrinkBarista", outputChannel="preparedDrinks")
public Drink prepareColdDrink(OrderItem orderItem) {
try {
Thread.sleep(this.coldDrinkDelay);

View File

@@ -21,17 +21,24 @@
<channel id="orders"/>
<channel id="drinks"/>
<channel id="coldDrinks">
<queue capacity="10"/>
</channel>
<channel id="hotDrinks">
<queue capacity="10"/>
</channel>
<channel id="coldDrinks"><queue capacity="10"/></channel>
<channel id="hotDrinks"><queue capacity="10"/></channel>
<channel id="coldDrinkBarista"/>
<channel id="hotDrinkBarista"/>
<channel id="preparedDrinks"/>
<bridge input-channel="coldDrinks" output-channel="coldDrinkBarista">
<poller>
<interval-trigger interval="1000"/>
</poller>
</bridge>
<bridge input-channel="hotDrinks" output-channel="hotDrinkBarista">
<poller>
<interval-trigger interval="1000"/>
</poller>
</bridge>
<stream:stdout-channel-adapter id="deliveries"/>
</beans:beans>

View File

@@ -74,7 +74,7 @@ public abstract class AbstractMethodAnnotationPostProcessor<T extends Annotation
if (StringUtils.hasText(inputChannelName)) {
MessageChannel inputChannel = this.channelResolver.resolveChannelName(inputChannelName);
Assert.notNull(inputChannel, "failed to resolve inputChannel '" + inputChannelName + "'");
Assert.isInstanceOf(SubscribableChannel.class, inputChannel,
Assert.isTrue(inputChannel instanceof SubscribableChannel,
"The input channel for an Annotation-based endpoint must be a SubscribableChannel.");
endpoint = new EventDrivenConsumer((SubscribableChannel) inputChannel, handler);
if (handler instanceof BeanFactoryAware) {