jms.JMSFactory
jms.JMSMessageActor
jms.JMSMessageConsumer
- package jms;
- import javax.jms.TopicConnectionFactory;
- import org.apache.activemq.ActiveMQConnectionFactory;
- public class JMSFactory {
- private static ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_BROKER_BIND_URL);
- public static TopicConnectionFactory getActiveMQConnectionFactory(){
- return activeMQConnectionFactory;
- }
- }
package jms;
import javax.jms.TopicConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSFactory {
private static ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_BROKER_BIND_URL);
public static TopicConnectionFactory getActiveMQConnectionFactory(){
return activeMQConnectionFactory;
}
}
jms.JMSMessageActor
- package jms;
- import javax.jms.*;
- public abstract class JMSMessageActor {
- protected String name=null;
- protected String defaultQueueName="defalut-queue";
- protected String defaultTopicName="defalut-topic";
- protected final int DESTIONATION_TYPE_TOPIC=1;
- protected final int DESTIONATION_TYPE_QUEUE=2;
- public JMSMessageActor(String name) {
- this.name = name;
- }
- public abstract Destination getDestination();
- public Destination createDefaultDestination(int type){
- Destination dest=null;
- switch(type){
- case DESTIONATION_TYPE_TOPIC:
- dest=new Topic(){
- @Override
- public String getTopicName() throws JMSException {
- return defaultTopicName;
- }};break;
- case DESTIONATION_TYPE_QUEUE:
- dest=new Queue(){
- @Override
- public String getQueueName() throws JMSException {
- return defaultQueueName;
- }};
- break;
- }
- return dest;
- }
- }
package jms;
import javax.jms.*;
public abstract class JMSMessageActor {
protected String name=null;
protected String defaultQueueName="defalut-queue";
protected String defaultTopicName="defalut-topic";
protected final int DESTIONATION_TYPE_TOPIC=1;
protected final int DESTIONATION_TYPE_QUEUE=2;
public JMSMessageActor(String name) {
this.name = name;
}
public abstract Destination getDestination();
public Destination createDefaultDestination(int type){
Destination dest=null;
switch(type){
case DESTIONATION_TYPE_TOPIC:
dest=new Topic(){
@Override
public String getTopicName() throws JMSException {
return defaultTopicName;
}};break;
case DESTIONATION_TYPE_QUEUE:
dest=new Queue(){
@Override
public String getQueueName() throws JMSException {
return defaultQueueName;
}};
break;
}
return dest;
}
}
jms.JMSMessageConsumer
- package jms;
- import javax.jms.*;
- public abstract class JMSMessageConsumer extends JMSMessageActor implements Runnable,MessageListener{
- public JMSMessageConsumer(String name){
- super(name);
- }
- @Override
- public void onMessage(Message message) {
- synchronized(JMSMessageConsumer.class){
- System.out.println("##### consumer "+ name +" receive message. #####");
- System.out.println(JMSUtil.formatMessage(message));
- }
- }
- @Override
- public void run() {
- try{
- // get topic connect factory
- ConnectionFactory factory = JMSFactory.getActiveMQConnectionFactory();
- // create connection
- Connection connection = factory.createConnection();
- // create unique client id for the connection
- connection.setClientID("consumer_connection_"+name);
- // if the connection start method is not invoked , the consumer may be not receive the message
- connection.start();
- // create session
- Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- Destination destination=getDestination();
- // if the destination is an instance of Queue ,
- // it will receive the message from the queue,
- // in other words the message can be consumed one time by one consumer
- // and the message is durable.
- // if the destination is an instance of Topic ,
- // the subscribers of the Topic can receive the message,
- // but the message is non durable.
- MessageConsumer consumer =session.createConsumer(destination,null,true);
- // if the destination is an instance of Topic,
- // specify the clientID of the connection
- // and create MessageConsumer like this,
- // the subscribers of the Topic can receive the message
- // and the message is durable.
- //consumer =session.createDurableSubscriber((Topic)destination, "durable topic", null, true);
- consumer.setMessageListener(this);
- }catch(Exception e){
- throw new RuntimeException(e);
- }
- }
- }