ActiveMQ y Spring
De Dos Ideas.
La integración de Apache ActiveMQ con Spring Framework es muy simple.
Configuración
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.5.0.xsd"> <amq:broker useJmx="false" persistent="false"> <amq:transportConnectors> <amq:transportConnector uri="tcp://localhost:0" /> </amq:transportConnectors> </amq:broker>
<amq:queue id="destination" physicalName="org.apache.activemq.spring.Test.spring.embedded"/>
<amq:connectionFactory id="jmsFactory" brokerURL="vm://localhost"/> <bean id="producerJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <bean class="org.springframework.jms.connection.SingleConnectionFactory"> <property name="targetConnectionFactory"> <ref local="jmsFactory" /> </property> </bean> </property> </bean>
<bean id="consumerJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="jmsFactory"/> </bean>
</beans>
Test de componentes
Mediante la configuración anterior podríamos realizar un test de componentes mockeando el servidor de mensajería productivo por el de ActiveMQ y realizar la siguiente comprobación:
@Autowired private MiJmsDao miJmsDao;
@Autowired @Qualifier("consummerJmsTemplate") private JmsTemplate consummerJmsTemplate;
@Test
public void envioMensaje_HolaMundo_obtengoMensajeHolaMundo() {
String mensaje = "Prueba";
miJmsDao.enviar(mensaje); String mensajeRecibido = (String)consummerJmsTemplate.receiveAndConvert("destination"); assertEquals(mensaje,mensajeRecibido);
}