diff --git a/.gitignore b/.gitignore index 48007b90..92ee8b1f 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ derby.log .idea activemq-data .settings/ + + diff --git a/applications/cafe-scripted/pom.xml b/applications/cafe-scripted/pom.xml index 05448def..f4eb0792 100644 --- a/applications/cafe-scripted/pom.xml +++ b/applications/cafe-scripted/pom.xml @@ -150,7 +150,7 @@ -classpath - org.springframework.integration.samples.cafe.demo.CafeDemoApp + org.springframework.integration.samples.org.springframework.integration.samples.cafe.demo.CafeDemoApp ${lang} @@ -181,7 +181,7 @@ -classpath - org.springframework.integration.samples.cafe.demo.ControlBusMain + org.springframework.integration.samples.org.springframework.integration.samples.cafe.demo.ControlBusMain diff --git a/applications/cafe/README.md b/applications/cafe/README.md index c49be8d6..b37998df 100644 --- a/applications/cafe/README.md +++ b/applications/cafe/README.md @@ -1,7 +1,7 @@ Cafe Sample Application ======================= -The Cafe sample emulates a simple operation of the Coffee shop when modeled using Enterprise Integration Patterns (EIP). It is inspired by one of the samples featured in Gregor Hohpe's Ramblings. The domain is that of a Cafe, and the basic flow is depicted in the following diagram: +The Cafe sample emulates a simple operation of the Coffee shop when modeled using Enterprise Integration Patterns (EIP). It is inspired by one of the samples featured in Gregor Hohpe's Ramblings (see Starbucks Does Not Use Two-Phase Commit: http://www.eaipatterns.com/ramblings/18_starbucks.html). The domain is that of a Cafe, and the basic flow is depicted in the following diagram: Barista @@ -23,43 +23,36 @@ The Order object may contain multiple OrderItems. Once the order is placed, a ** The prepared drinks are then sent to the Waiter where they are aggregated into a Delivery object. -## Instructions for running the CafeDemo sample +## Cafe Sample Implementations +There are currently three implementations of the cafe sample: -1. The example comes with two identical configurations. One is ANNOTATION-based another is XML-based +1. Using Spring Integration channels and components +2. Using AMQP/RabbitMQ to demonstrate a distributed architecture +3. Using JMS/ActiveMQ to demonstrate jms-backed queues and a distributed architecture -2. To run this sample simply execute the CafeDemoApp test classes in the **org.springframework.integration.samples.cafe.xml** or **org.springframework.integration.samples.cafe.annotation** package. +All three implementations follow the same flow described above. See each one's README.md file for more details about the respective implementations. -3. The example also provides an alternative configuration that uses AMQP channels to distribute the components in the **CafeDemo** sample. To run this alternative configuration of the sample, be sure to have a RabbitMQ broker started on localhost:5672 configured with the default guest|guest client credentials on the / vHost, then execute the following test classes in order: - - 1. **cafeDemoAppBaristaColdAmqp** - starts the Cold Drink Barista - 2. **cafeDemoAppBaristaHotAmqp** - starts the Hot Drink Barista - 3. **cafeDemoAppAmqp** - starts the Cafe Storefront (Places 100 orders on the orders queue) - 4. **cafeDemoAppOperationsAmqp** - starts the Cafe Operations (OrderSplitter, DrinkRouter, PreparedDrinkAggregator) - -**Note**: All AMQP exchanges, queues, and bindings needed for this sample are defined within the different xml config files that support the above test classes. - Upon running any of the alternatives, you should see the output similar to this: - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-1 prepared cold drink #1 for order #1: iced 3 shot MOCHA - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-1 prepared cold drink #2 for order #2: iced 3 shot MOCHA - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-1 prepared cold drink #3 for order #3: iced 3 shot MOCHA - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-1 prepared cold drink #4 for order #4: iced 3 shot MOCHA - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-2 prepared hot drink #1 for order #1: hot 2 shot LATTE + INFO : Barista - task-scheduler-1 prepared cold drink #1 for order #1: iced 3 shot MOCHA + INFO : Barista - task-scheduler-1 prepared cold drink #2 for order #2: iced 3 shot MOCHA + INFO : Barista - task-scheduler-1 prepared cold drink #3 for order #3: iced 3 shot MOCHA + INFO : Barista - task-scheduler-1 prepared cold drink #4 for order #4: iced 3 shot MOCHA + INFO : Barista - task-scheduler-2 prepared hot drink #1 for order #1: hot 2 shot LATTE ----------------------- Order #1 Iced MOCHA, 3 shots. Hot LATTE, 2 shots. ----------------------- - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-1 prepared cold drink #5 for order #5: iced 3 shot MOCHA - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-1 prepared cold drink #6 for order #6: iced 3 shot MOCHA - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-1 prepared cold drink #7 for order #7: iced 3 shot MOCHA - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-1 prepared cold drink #8 for order #8: iced 3 shot MOCHA - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-1 prepared cold drink #9 for order #9: iced 3 shot MOCHA - INFO : org.springframework.integration.samples.cafe.annotation.Barista - task-scheduler-2 prepared hot drink #2 for order #2: hot 2 shot LATTE + INFO : Barista - task-scheduler-1 prepared cold drink #5 for order #5: iced 3 shot MOCHA + INFO : Barista - task-scheduler-1 prepared cold drink #6 for order #6: iced 3 shot MOCHA + INFO : Barista - task-scheduler-1 prepared cold drink #7 for order #7: iced 3 shot MOCHA + INFO : Barista - task-scheduler-1 prepared cold drink #8 for order #8: iced 3 shot MOCHA + INFO : Barista - task-scheduler-1 prepared cold drink #9 for order #9: iced 3 shot MOCHA + INFO : Barista - task-scheduler-2 prepared hot drink #2 for order #2: hot 2 shot LATTE ----------------------- Order #2 Iced MOCHA, 3 shots. Hot LATTE, 2 shots. - ----------------------- Happy integration :-) \ No newline at end of file diff --git a/applications/cafe/cafe-amqp/README.md b/applications/cafe/cafe-amqp/README.md new file mode 100644 index 00000000..d035e3f1 --- /dev/null +++ b/applications/cafe/cafe-amqp/README.md @@ -0,0 +1,29 @@ +Cafe Sample Application - AMQP Implementation +======================= + +See the parent-level README.md for more details, but the flow of the implementation should follow this diagram: + + + Barista + hotDrinks ____________________ + |==========| -->| | + orders drinks / | prepareHotDrink() | + Place Order ->Cafe->|======|->OrderSplitter->|======|->DrinkRouter | | + \ coldDrinks | prepareColdDrink() | + |==========| -->| | + |____________________| + + Legend: |====| - channels + + +## Instructions for running the CafeDemo AMQP sample + +### Distributed components +To run this alternative configuration of the sample, be sure to have a RabbitMQ broker started on localhost:5672 configured with the default guest|guest client credentials on the / vHost, then execute the following test classes in order: + + 1. **cafeDemoAppBaristaColdAmqp** - starts the Cold Drink Barista + 2. **cafeDemoAppBaristaHotAmqp** - starts the Hot Drink Barista + 3. **cafeDemoAppAmqp** - starts the Cafe Storefront (Places 100 orders on the orders queue) + 4. **cafeDemoAppOperationsAmqp** - starts the Cafe Operations (OrderSplitter, DrinkRouter, PreparedDrinkAggregator) + +**Note**: All AMQP exchanges, queues, and bindings needed for this sample are defined within the different xml config files that support the above test classes. diff --git a/applications/cafe/cafe-amqp/pom.xml b/applications/cafe/cafe-amqp/pom.xml new file mode 100644 index 00000000..1256ba8f --- /dev/null +++ b/applications/cafe/cafe-amqp/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + cafe + org.springframework.integration.samples + 2.1.0.BUILD-SNAPSHOT + + + cafe-amqp + + Cafe - With AMQP Message Broker + + This module implements the cafe sample using spring-integration components backed + by an AMQP message broker for message persistence and component distribution. This + sample uses RabbitMQ broker, but any AMQP message broker can be used. For an example + using JMS, see the JMS implemenation of the cafe sample. + + + + + ${project.parent.groupId} + cafe-si + ${project.parent.version} + + + org.springframework.integration + spring-integration-amqp + ${spring.integration.version} + + + + \ No newline at end of file diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppAmqp.java b/applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppAmqp.java similarity index 96% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppAmqp.java rename to applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppAmqp.java index 357bfbcb..58bced01 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppAmqp.java +++ b/applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppAmqp.java @@ -57,7 +57,7 @@ public class CafeDemoAppAmqp { public static void main(String[] args) { AbstractApplicationContext context = CafeDemoAppUtilities.loadProfileContext( - "/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml", + "/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml", CafeDemoAppAmqp.class,CafeDemoAppUtilities.DEV); order(context, 100); context.close(); diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaColdAmqp.java b/applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaColdAmqp.java similarity index 95% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaColdAmqp.java rename to applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaColdAmqp.java index b3c93cbe..168c5542 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaColdAmqp.java +++ b/applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaColdAmqp.java @@ -41,7 +41,7 @@ public class CafeDemoAppBaristaColdAmqp { public static void main(String[] args) { AbstractApplicationContext context = CafeDemoAppUtilities.loadProfileContext( - "/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaCold-xml.xml", + "/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaCold-xml.xml", CafeDemoAppBaristaColdAmqp.class,CafeDemoAppUtilities.DEV); System.out.println("Press Enter/Return in the console to exit the Barista Cold App"); diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaHotAmqp.java b/applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaHotAmqp.java similarity index 95% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaHotAmqp.java rename to applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaHotAmqp.java index 0cc19928..6ca6935e 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaHotAmqp.java +++ b/applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaHotAmqp.java @@ -41,7 +41,7 @@ public class CafeDemoAppBaristaHotAmqp { public static void main(String[] args) { AbstractApplicationContext context = CafeDemoAppUtilities.loadProfileContext( - "/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaHot-xml.xml", + "/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaHot-xml.xml", CafeDemoAppBaristaHotAmqp.class,CafeDemoAppUtilities.DEV); System.out.println("Press Enter/Return in the console to exit the Barista Hot App"); diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppOperationsAmqp.java b/applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppOperationsAmqp.java similarity index 95% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppOperationsAmqp.java rename to applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppOperationsAmqp.java index dbdb7ec8..87f736c9 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppOperationsAmqp.java +++ b/applications/cafe/cafe-amqp/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppOperationsAmqp.java @@ -47,7 +47,7 @@ public class CafeDemoAppOperationsAmqp { public static void main(String[] args) { AbstractApplicationContext context = CafeDemoAppUtilities.loadProfileContext( - "/META-INF/spring/integration/amqp/cafeDemo-amqp-operations-xml.xml", + "/META-INF/spring/integration/amqp/cafeDemo-amqp-operations-xml.xml", CafeDemoAppOperationsAmqp.class,CafeDemoAppUtilities.DEV); System.out.println("Press Enter/Return in the console to exit the Cafe Operations App"); diff --git a/applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaCold-xml.xml b/applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaCold-xml.xml similarity index 100% rename from applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaCold-xml.xml rename to applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaCold-xml.xml diff --git a/applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaHot-xml.xml b/applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaHot-xml.xml similarity index 100% rename from applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaHot-xml.xml rename to applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-baristaHot-xml.xml diff --git a/applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-config-xml.xml b/applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-config-xml.xml similarity index 100% rename from applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-config-xml.xml rename to applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-config-xml.xml diff --git a/applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-operations-xml.xml b/applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-operations-xml.xml similarity index 100% rename from applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-operations-xml.xml rename to applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-operations-xml.xml diff --git a/applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml b/applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml similarity index 97% rename from applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml rename to applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml index 138615e0..c4ad9717 100644 --- a/applications/cafe/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml +++ b/applications/cafe/cafe-amqp/src/main/resources/META-INF/spring/integration/amqp/cafeDemo-amqp-xml.xml @@ -5,7 +5,7 @@ xmlns:int-amqp="http://www.springframework.org/schema/integration/amqp" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xmlns:stream="http://www.springframework.org/schema/integration/stream" - xmlns:cloud="http://schema.cloudfoundry.org/spring" + xmlns:cloud="http://schema.cloudfoundry.org /spring" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://schema.cloudfoundry.org/spring diff --git a/applications/cafe/src/test/resources/log4j.xml b/applications/cafe/cafe-amqp/src/main/resources/log4j.xml similarity index 100% rename from applications/cafe/src/test/resources/log4j.xml rename to applications/cafe/cafe-amqp/src/main/resources/log4j.xml diff --git a/applications/cafe/cafe-jms/README.md b/applications/cafe/cafe-jms/README.md new file mode 100644 index 00000000..d891cfe2 --- /dev/null +++ b/applications/cafe/cafe-jms/README.md @@ -0,0 +1,31 @@ +Cafe Sample Application - JMS Implementation +======================= + +See the parent-level README.md for more details, but the flow of the implementation should follow this diagram: + + + Barista + hotDrinks ____________________ + |==========| -->| | + orders drinks / | prepareHotDrink() | + Place Order ->Cafe->|======|->OrderSplitter->|======|->DrinkRouter | | + \ coldDrinks | prepareColdDrink() | + |==========| -->| | + |____________________| + + Legend: |====| - channels + + +## Instructions for running the CafeDemo JMS sample + +### Distributed components +To run this configuration, start an instance of ActiveMQ with the openwire/TCP connector available on the default port (61616). There are no credentials of which to be aware. Please execute the following classes in order: + + 1. **CafeDemoAppBaristaColdActiveMQ - starts the ColdDrink Barista + 2. **CafeDemoAppBaristaHotActiveMQ - starts the HotDrink Barista + 3. **CafeDemoAppOperationsActiveMQ - starts the Cafe Operations (order splitter, drink router, etc). + 4. **CafeDemoAppAcitveMQ - places the orders + +### JMS backed components + +See **CafeDemoActiveMQBackedChannels** for an example of how to use the JMS-backed channels. No need to start an external ActiveMQ because one is started internally \ No newline at end of file diff --git a/applications/cafe/cafe-jms/pom.xml b/applications/cafe/cafe-jms/pom.xml new file mode 100644 index 00000000..2bacad05 --- /dev/null +++ b/applications/cafe/cafe-jms/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + + org.springframework.integration.samples + cafe + 2.1.0.BUILD-SNAPSHOT + + + cafe-jms + + Cafe - With JMS Message Broker + + This module implements the cafe sample using spring-integration components backed + by a JMS broker for persistent messaging as well as component distribution. This + sample uses ActiveMQ as the JMS broker, but any JMS-compliant broker can be + used. For an example using AMQP, see the AMQP implementation of the cafe sample. + + + + 5.4.3 + + + + org.apache.activemq + activemq-all + ${activemq.version} + + + org.apache.xbean + xbean-spring + 3.9 + + + org.springframework.integration + spring-integration-jms + ${spring.integration.version} + + + ${project.parent.groupId} + cafe-si + ${project.parent.version} + + + + \ No newline at end of file diff --git a/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoActiveMQBackedChannels.java b/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoActiveMQBackedChannels.java new file mode 100644 index 00000000..8ae29da1 --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoActiveMQBackedChannels.java @@ -0,0 +1,47 @@ +package org.springframework.integration.samples.cafe.xml; + +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.integration.samples.cafe.Cafe; +import org.springframework.integration.samples.cafe.DrinkType; +import org.springframework.integration.samples.cafe.Order; + +import java.io.IOException; + +/** + * Main class for running the Cafe sample with JMS-backed (ActiveMQ) channels. Once the application + * is running, simply press or any other key to end the application. To fully experience the + * benefits of this solution, try halting/exiting the program in the middle of running it, comment out the + * call to place new orders (the order() function call) and watch that the processing still continues + * where it left off when you halted it. This is because the messages are persisted in the ActiveMQ queues + * + * @author ceposta + */ +public class CafeDemoActiveMQBackedChannels { + + /** + * place some orders + * @param context spring context + * @param count the number of standard orders + */ + public static void order(AbstractApplicationContext context, int count){ + Cafe cafe = (Cafe) context.getBean("cafe"); + for (int i = 1; i <= count; i++) { + Order order = new Order(i); + order.addItem(DrinkType.LATTE, 2, false); + order.addItem(DrinkType.MOCHA, 3, true); + cafe.placeOrder(order); + } + } + + public static void main(String[] args) throws InterruptedException, IOException { + AbstractApplicationContext context = new ClassPathXmlApplicationContext("/META-INF/spring/integration/activemq/cafeDemo-amq-config.xml", + "/META-INF/spring/integration/activemq/cafeDemo-amq-jms-backed.xml"); + + // comment this out to run the sample without placing any new orders on the queue + order(context, 25); + + System.in.read(); + context.close(); + } +} diff --git a/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppActiveMQ.java b/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppActiveMQ.java new file mode 100644 index 00000000..f181a49a --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppActiveMQ.java @@ -0,0 +1,41 @@ +package org.springframework.integration.samples.cafe.xml; + +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.integration.samples.cafe.Cafe; +import org.springframework.integration.samples.cafe.DrinkType; +import org.springframework.integration.samples.cafe.Order; + +import java.io.IOException; + +/** + * Main class for sending orders that will be handled in separate, distributed + * processes. See the README.md file for more information on the order in which + * to start the processes + * + * @author ceposta + */ +public class CafeDemoAppActiveMQ { + + /** + * place some orders + * @param context spring context + * @param count the number of standard orders + */ + public static void order(AbstractApplicationContext context, int count){ + Cafe cafe = (Cafe) context.getBean("cafe"); + for (int i = 1; i <= count; i++) { + Order order = new Order(i); + order.addItem(DrinkType.LATTE, 2, false); + order.addItem(DrinkType.MOCHA, 3, true); + cafe.placeOrder(order); + } + } + + public static void main(String[] args) throws InterruptedException, IOException { + AbstractApplicationContext context = new ClassPathXmlApplicationContext("/META-INF/spring/integration/activemq/cafeDemo-amq-config.xml", + "/META-INF/spring/integration/activemq/cafeDemo-amq-xml.xml"); + order(context, 25); + context.close(); + } +} diff --git a/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaColdActiveMQ.java b/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaColdActiveMQ.java new file mode 100644 index 00000000..63f80771 --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaColdActiveMQ.java @@ -0,0 +1,29 @@ +package org.springframework.integration.samples.cafe.xml; + +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.integration.samples.cafe.Cafe; +import org.springframework.integration.samples.cafe.DrinkType; +import org.springframework.integration.samples.cafe.Order; + +import java.io.IOException; + +/** + * Main class for starting up the distributed task of handling/creating the Cold + * beverages. See the README.md file for more information on the order in which + * to start the processes + * + * @author ceposta + */ +public class CafeDemoAppBaristaColdActiveMQ { + + + public static void main(String[] args) throws InterruptedException, IOException { + AbstractApplicationContext context = new ClassPathXmlApplicationContext("/META-INF/spring/integration/activemq/cafeDemo-amq-config.xml", + "/META-INF/spring/integration/activemq/cafeDemo-amq-baristaCold-xml.xml"); + + System.out.println("Press Enter/Return to exit"); + System.in.read(); + context.close(); + } +} diff --git a/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaHotActiveMQ.java b/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaHotActiveMQ.java new file mode 100644 index 00000000..3a44d913 --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppBaristaHotActiveMQ.java @@ -0,0 +1,26 @@ +package org.springframework.integration.samples.cafe.xml; + +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.io.IOException; + +/** + * Main class for starting up the distributed task of handling/creating the Hot¡ + * beverages. See the README.md file for more information on the order in which + * to start the processes + * + * @author ceposta + */ +public class CafeDemoAppBaristaHotActiveMQ { + + + public static void main(String[] args) throws InterruptedException, IOException { + AbstractApplicationContext context = new ClassPathXmlApplicationContext("/META-INF/spring/integration/activemq/cafeDemo-amq-config.xml", + "/META-INF/spring/integration/activemq/cafeDemo-amq-baristaHot-xml.xml"); + + System.out.println("Press Enter/Return to exit"); + System.in.read(); + context.close(); + } +} diff --git a/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppOperationsActiveMQ.java b/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppOperationsActiveMQ.java new file mode 100644 index 00000000..fc7e935a --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppOperationsActiveMQ.java @@ -0,0 +1,29 @@ +package org.springframework.integration.samples.cafe.xml; + +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.io.IOException; + +/** + * Main class for starting up the distributed task of processing orders including + * splitting the orders, sending them to the hot/cold baristas, aggregating the orders + * and delivering them to the waiters. + * + * See the README.md file for more information on the order in which + * to start the processes + * + * @author ceposta + */ +public class CafeDemoAppOperationsActiveMQ { + + + public static void main(String[] args) throws InterruptedException, IOException { + AbstractApplicationContext context = new ClassPathXmlApplicationContext("/META-INF/spring/integration/activemq/cafeDemo-amq-config.xml", + "/META-INF/spring/integration/activemq/cafeDemo-amq-operations.xml"); + + System.out.println("Press Enter/Return to exit"); + System.in.read(); + context.close(); + } +} diff --git a/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-baristaCold-xml.xml b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-baristaCold-xml.xml new file mode 100644 index 00000000..5a765109 --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-baristaCold-xml.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-baristaHot-xml.xml b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-baristaHot-xml.xml new file mode 100644 index 00000000..b8bf1b9d --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-baristaHot-xml.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-config.xml b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-config.xml new file mode 100644 index 00000000..c5f4e3a2 --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-config.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-jms-backed.xml b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-jms-backed.xml new file mode 100644 index 00000000..2aacb63d --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-jms-backed.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-operations.xml b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-operations.xml new file mode 100644 index 00000000..d6f8faaf --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-operations.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-xml.xml b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-xml.xml new file mode 100644 index 00000000..7705a68d --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/resources/META-INF/spring/integration/activemq/cafeDemo-amq-xml.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/applications/cafe/cafe-jms/src/main/resources/log4j.xml b/applications/cafe/cafe-jms/src/main/resources/log4j.xml new file mode 100644 index 00000000..bbcbcf15 --- /dev/null +++ b/applications/cafe/cafe-jms/src/main/resources/log4j.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/applications/cafe/cafe-si/README.md b/applications/cafe/cafe-si/README.md new file mode 100644 index 00000000..a593331f --- /dev/null +++ b/applications/cafe/cafe-si/README.md @@ -0,0 +1,27 @@ +Cafe Sample Application - Pure SI Implementation +======================= + +See the parent-level README.md for more details, but the flow of the implementation should follow this diagram: + + + Barista + hotDrinks ____________________ + |==========| -->| | + orders drinks / | prepareHotDrink() | + Place Order ->Cafe->|======|->OrderSplitter->|======|->DrinkRouter | | + \ coldDrinks | prepareColdDrink() | + |==========| -->| | + |____________________| + + Legend: |====| - channels + + + +## Instructions for running the CafeDemo sample + +The example comes with two identical configurations. One is ANNOTATION-based another is XML-based + +To run this sample simply execute the CafeDemoApp classes in the **org.springframework.integration.samples.cafe.xml** or **org.springframework.integration.samples.cafe.annotation** package. + +See the configuration files in the **META-INF/spring/integration** path. + diff --git a/applications/cafe/cafe-si/pom.xml b/applications/cafe/cafe-si/pom.xml new file mode 100644 index 00000000..c4b640f4 --- /dev/null +++ b/applications/cafe/cafe-si/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + cafe + org.springframework.integration.samples + 2.1.0.BUILD-SNAPSHOT + + + cafe-si + jar + + Cafe - Pure Spring Integration + + This module implements the cafe sample using spring-integration components. + The channels that are used are in-memory channels and there is no distribution of + the processes (i.e., all of the processing happens within the same JVM and there + is no message broker). To see the cafe sample with a message broker to help distribute + the components, see the AMQP or the JMS sample. + + + \ No newline at end of file diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Cafe.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Cafe.java similarity index 100% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Cafe.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Cafe.java diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Delivery.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Delivery.java similarity index 96% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Delivery.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Delivery.java index 2f0b5b49..44894f13 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Delivery.java +++ b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Delivery.java @@ -16,13 +16,14 @@ package org.springframework.integration.samples.cafe; +import java.io.Serializable; import java.util.List; /** * @author Marius Bogoevici * @author Tom McCuch */ -public class Delivery { +public class Delivery implements Serializable{ private static final String SEPARATOR = "-----------------------"; diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Drink.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Drink.java similarity index 96% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Drink.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Drink.java index aa336199..95ee3166 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Drink.java +++ b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Drink.java @@ -16,11 +16,13 @@ package org.springframework.integration.samples.cafe; +import java.io.Serializable; + /** * @author Marius Bogoevici * @author Tom McCuch */ -public class Drink { +public class Drink implements Serializable{ private boolean iced; diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/DrinkType.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/DrinkType.java similarity index 90% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/DrinkType.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/DrinkType.java index 4944ca4c..eef25991 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/DrinkType.java +++ b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/DrinkType.java @@ -16,10 +16,12 @@ package org.springframework.integration.samples.cafe; +import java.io.Serializable; + /** * @author Mark Fisher */ -public enum DrinkType { +public enum DrinkType implements Serializable{ ESPRESSO, LATTE, diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Order.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Order.java similarity index 95% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Order.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Order.java index 6f836a82..af970c23 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/Order.java +++ b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/Order.java @@ -16,6 +16,7 @@ package org.springframework.integration.samples.cafe; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -24,7 +25,7 @@ import java.util.List; * @author Marius Bogoevici * @author Tom McCuch */ -public class Order { +public class Order implements Serializable{ private List orderItems = new ArrayList(); diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/OrderItem.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/OrderItem.java similarity index 95% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/OrderItem.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/OrderItem.java index c3e0a2b0..2e34b5b1 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/OrderItem.java +++ b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/OrderItem.java @@ -16,12 +16,14 @@ package org.springframework.integration.samples.cafe; +import java.io.Serializable; + /** * @author Mark Fisher * @author Marius Bogoevici * @author Tom McCuch */ -public class OrderItem { +public class OrderItem implements Serializable { private DrinkType type; diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/Barista.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/Barista.java similarity index 100% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/Barista.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/Barista.java index ece88941..434b1870 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/Barista.java +++ b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/Barista.java @@ -18,10 +18,10 @@ package org.springframework.integration.samples.cafe.annotation; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.log4j.Logger; -import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.samples.cafe.Drink; import org.springframework.integration.samples.cafe.OrderItem; +import org.apache.log4j.Logger; +import org.springframework.integration.annotation.ServiceActivator; import org.springframework.stereotype.Component; /** diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/CafeDemoApp.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/CafeDemoApp.java similarity index 100% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/CafeDemoApp.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/CafeDemoApp.java diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/DrinkRouter.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/DrinkRouter.java similarity index 100% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/DrinkRouter.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/DrinkRouter.java index 0dc31ff5..5c675b20 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/DrinkRouter.java +++ b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/DrinkRouter.java @@ -16,9 +16,9 @@ package org.springframework.integration.samples.cafe.annotation; +import org.springframework.integration.samples.cafe.OrderItem; import org.springframework.integration.annotation.MessageEndpoint; import org.springframework.integration.annotation.Router; -import org.springframework.integration.samples.cafe.OrderItem; /** * @author Mark Fisher diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/OrderSplitter.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/OrderSplitter.java similarity index 100% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/OrderSplitter.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/OrderSplitter.java index a2a6d756..3fec59eb 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/OrderSplitter.java +++ b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/OrderSplitter.java @@ -18,10 +18,10 @@ package org.springframework.integration.samples.cafe.annotation; import java.util.List; -import org.springframework.integration.annotation.MessageEndpoint; -import org.springframework.integration.annotation.Splitter; import org.springframework.integration.samples.cafe.Order; import org.springframework.integration.samples.cafe.OrderItem; +import org.springframework.integration.annotation.MessageEndpoint; +import org.springframework.integration.annotation.Splitter; /** * @author Mark Fisher diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/Waiter.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/Waiter.java similarity index 100% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/Waiter.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/Waiter.java index d6c0b3f5..1b8bbd1a 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/annotation/Waiter.java +++ b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/annotation/Waiter.java @@ -18,11 +18,11 @@ package org.springframework.integration.samples.cafe.annotation; import java.util.List; +import org.springframework.integration.samples.cafe.Delivery; +import org.springframework.integration.samples.cafe.Drink; import org.springframework.integration.annotation.Aggregator; import org.springframework.integration.annotation.CorrelationStrategy; import org.springframework.integration.annotation.MessageEndpoint; -import org.springframework.integration.samples.cafe.Delivery; -import org.springframework.integration.samples.cafe.Drink; /** * @author Marius Bogoevici diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/Barista.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/xml/Barista.java similarity index 100% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/Barista.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/xml/Barista.java index c4d117f0..71728264 100644 --- a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/Barista.java +++ b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/xml/Barista.java @@ -18,9 +18,9 @@ package org.springframework.integration.samples.cafe.xml; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.log4j.Logger; import org.springframework.integration.samples.cafe.Drink; import org.springframework.integration.samples.cafe.OrderItem; +import org.apache.log4j.Logger; /** * @author Mark Fisher diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoApp.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoApp.java similarity index 100% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoApp.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoApp.java diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppUtilities.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppUtilities.java similarity index 100% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppUtilities.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/xml/CafeDemoAppUtilities.java diff --git a/applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/Waiter.java b/applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/xml/Waiter.java similarity index 100% rename from applications/cafe/src/main/java/org/springframework/integration/samples/cafe/xml/Waiter.java rename to applications/cafe/cafe-si/src/main/java/org/springframework/integration/samples/cafe/xml/Waiter.java diff --git a/applications/cafe/src/main/resources/META-INF/spring/integration/cafeDemo-annotation.xml b/applications/cafe/cafe-si/src/main/resources/META-INF/spring/integration/cafeDemo-annotation.xml similarity index 100% rename from applications/cafe/src/main/resources/META-INF/spring/integration/cafeDemo-annotation.xml rename to applications/cafe/cafe-si/src/main/resources/META-INF/spring/integration/cafeDemo-annotation.xml diff --git a/applications/cafe/src/main/resources/META-INF/spring/integration/cafeDemo-xml.xml b/applications/cafe/cafe-si/src/main/resources/META-INF/spring/integration/cafeDemo-xml.xml similarity index 100% rename from applications/cafe/src/main/resources/META-INF/spring/integration/cafeDemo-xml.xml rename to applications/cafe/cafe-si/src/main/resources/META-INF/spring/integration/cafeDemo-xml.xml diff --git a/applications/cafe/cafe-si/src/main/resources/log4j.xml b/applications/cafe/cafe-si/src/main/resources/log4j.xml new file mode 100644 index 00000000..bbcbcf15 --- /dev/null +++ b/applications/cafe/cafe-si/src/main/resources/log4j.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/applications/cafe/pom.xml b/applications/cafe/pom.xml index b60c5a4f..cc7c3743 100644 --- a/applications/cafe/pom.xml +++ b/applications/cafe/pom.xml @@ -4,8 +4,14 @@ 4.0.0 org.springframework.integration.samples cafe - 2.1.0.BUILD-SNAPSHOT - Samples (Applications) - Cafe Sample + pom + 2.1.0.BUILD-SNAPSHOT + + cafe-jms + cafe-si + cafe-amqp + + Samples (Applications) - Cafe Sample UTF-8 2.1.0.RELEASE @@ -24,11 +30,6 @@ spring-context ${spring.core.version} - - org.springframework.integration - spring-integration-amqp - ${spring.integration.version} - org.springframework.integration spring-integration-stream