Here you will find some of the code that I have been writing for some time now, as well as different projects I have worked on.
Friday, November 19, 2010
Wednesday, October 27, 2010
Thursday, July 22, 2010
Spring, ActiveMQ and JMS implementation
Here is a quick implementation for JMS using Spring and ActiveMQ in Tomcat 6.
First, libraries and frameworks:
For my testing I created two applications: Consumer and Producer. The producer sends a "Hello World: message and the consumer "processes" the message.
applicationContext.xml
One can see, the broker is embedded within Spring. The destination is queue.data.
JmsMessageListener.java
Producer
applicationContext.xml
One can see the jmsFactory and the destination of the broker ( consumer )
JmsMessageProducer.java
That should do it!! Enjoy.
First, libraries and frameworks:
- ActiveMQ 5.1
- Spring 2.5
- Tomcat 6
- Be sure to add: org.osgi.core-4.1.0.jar, spring-jms.jar, xbean-spring-3.6.jar
For my testing I created two applications: Consumer and Producer. The producer sends a "Hello World: message and the consumer "processes" the message.
Consumer configuration
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:amq="http://activemq.apache.org/schema/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd">
<context:component-scan base-package="sample" />
<!-- Embedded ActiveMQ Broker -->
<amq:broker id="broker" useJmx="false" persistent="false">
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:61616" />
</amq:transportConnectors>
</amq:broker>
<amq:connectionFactory id="jmsFactory" brokerURL="tcp://localhost:61616" />
<!-- JMS Consumer Configuration -->
<bean id="jmsConsumerConnectionFactory"
class="org.springframework.jms.connection.SingleConnectionFactory"
depends-on="broker"
p:targetConnectionFactory-ref="jmsFactory" />
<jms:listener-container container-type="default"
connection-factory="jmsConsumerConnectionFactory"
acknowledge="auto">
<jms:listener destination="queue.data" ref="jmsMessageListener" />
</jms:listener-container>
</beans>
One can see, the broker is embedded within Spring. The destination is queue.data.
JmsMessageListener.java
package sample;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.springframework.stereotype.Component;
/**
*
* @author mcorrea
*/
@Component
public class JmsMessageListener implements MessageListener {
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage tm = (TextMessage)message;
String msg = tm.getText();
System.out.println("Message receive "+msg);
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
Producer
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:amq="http://activemq.apache.org/schema/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd">
<context:component-scan base-package="sample" />
<!-- JMS ConnectionFactory to use, configuring the embedded broker using XML -->
<amq:connectionFactory id="jmsFactory" brokerURL="tcp://localhost:61616" />
<!-- ActiveMQ Destination -->
<amq:queue id="destination" physicalName="queue.data" />
<!-- JMS Producer Configuration -->
<bean id="jmsProducerConnectionFactory"
class="org.springframework.jms.connection.SingleConnectionFactory"
p:targetConnectionFactory-ref="jmsFactory" />
<bean id="jmsProducerTemplate" class="org.springframework.jms.core.JmsTemplate"
p:connectionFactory-ref="jmsProducerConnectionFactory"
p:defaultDestination-ref="destination" />
</beans>
One can see the jmsFactory and the destination of the broker ( consumer )
JmsMessageProducer.java
package sample;
import javax.annotation.PostConstruct;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;
@Component
public class JmsMessageProducer {
@Autowired
private JmsTemplate template = null;
/**
* Generates JMS messages
*/
@PostConstruct
public void generateMessages() throws JMSException {
template.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage message = session.createTextMessage("Hello World!!! ");
System.out.println("Sending message... " );
return message;
}
});
}
}
That should do it!! Enjoy.
Thursday, February 4, 2010
Subscribe to:
Posts (Atom)