Spring Integration
Spring Framework proporciona integración para JMS, remoting, scheduling, email y JMX. Spring Integration intenta crear una capa de abstracción para los patrones de integración empresarial, con la filosofía de separar los componentes de negocio del sistema de mensajeria utilizado.
Contenido
- 1 Algunos ejemplos de como utilizar Spring Integration con mensajería.
- 1.1 Definición de canales de entrada y salida
- 1.2 Consumir un mensaje de una cola y mostrarlo por consola. (stdout-channel-adapter)
- 1.3 Consumir un mensaje de una cola y enviarlo a una lista fija de colas destino. (recipient-list-router).
- 1.4 Consumir un mensaje de una cola y enviarlo a una cola especifica dependiendo del valor de un atributo del header del mensaje. (header-value-router).
- 1.5 Consumir un mensaje de una cola y enviarlo a una lista de colas de salida utilizando un pojo para determinar a que colas enviarlo.(router).
- 2 Ver también
Algunos ejemplos de como utilizar Spring Integration con mensajería.
Definición de canales de entrada y salida
<integration:channel id="QueueChanneIn"/>
<jms:message-driven-channel-adapter connection-factory="PruebaQueueConnectionFactory" destination-name="jms/Queue-in" destination-resolver="jmsDestinationResolver" channel="QueueChanneIn" acknowledge="auto" concurrent-consumers="1"/>
<integration:channel id="QueueChanneOut1"/> <jms:outbound-channel-adapter jms-template="jmsQueueTemplateOut1" channel="QueueChanneOut1"/>
<integration:channel id="QueueChanneOut2"/> <jms:outbound-channel-adapter jms-template="jmsQueueTemplateOut2" channel="QueueChanneOut2"/>
Consumir un mensaje de una cola y mostrarlo por consola. (stdout-channel-adapter)
<stream:stdout-channel-adapter id="stdout" append-newline="true"/>
<integration:bridge id="echo" input-channel="QueueChanneIn" output-channel="stdout"/>
Consumir un mensaje de una cola y enviarlo a una lista fija de colas destino. (recipient-list-router).
<integration:recipient-list-router input-channel="QueueChanneIn" apply-sequence="true">
<integration:recipient channel="QueueChanneOut1"/> <integration:recipient channel="QueueChanneOut2"/>
</integration:recipient-list-router>
Consumir un mensaje de una cola y enviarlo a una cola especifica dependiendo del valor de un atributo del header del mensaje. (header-value-router).
<integration:header-value-router input-channel="QueueChanneIn"
header-name="springintegration_jms_type">
<integration:mapping value="Out1" channel="QueueChanneOut1"/> <integration:mapping value="Out2" channel="QueueChanneOut2"/>
</integration:header-value-router>
Consumir un mensaje de una cola y enviarlo a una lista de colas de salida utilizando un pojo para determinar a que colas enviarlo.(router).
<integration:router input-channel="QueueChanneIn" ref="multiDestino"/>
<bean id="multiDestino" class="com.dosideas.springintegration.MultiDestino"/>
public class MultiDestino {
@Router public List<String> resolverChannel(GenericMessage message) throws JMSException {
List<String> list = new ArrayList<String>(); if(message.getHeaders().get("springintegration_jms_type").equals("Out1")) { System.out.println(message.getHeaders().get("springintegration_jms_type")); list.add("QueueChanneOut1"); } else if(message.getHeaders().get("springintegration_jms_type").equals("Out2")) { System.out.println(message.getHeaders().get("springintegration_jms_type")); list.add("QueueChanneOut2"); } else if(message.getHeaders().get("springintegration_jms_type").equals("Multi")) { System.out.println(message.getHeaders().get("springintegration_jms_type")); list.add("QueueChanneOut1"); list.add("QueueChanneOut2"); }
return list; }
}