1. 程式人生 > >activeMQ隊列模式和主題模式的Java實現

activeMQ隊列模式和主題模式的Java實現

ons javax try nfa port 實現 catch n) tac

一、隊列模式

生產者

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;



public class AppProducer {
    
public static final String url = "tcp://127.0.0.1:61616"; public static final String queueName = "queue-test"; public static void main(String[] args) throws JMSException{ //1. 創建ConnectionFactory ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( url);
//2. 創建Connection Connection connection = connectionFactory.createConnection(); //3. 啟動鏈接 connection.start(); //4. 創建會話 Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE); //5. 創建一個目標 Destination destination = session.createQueue( queueName);
//6. 創建一個生產者 MessageProducer producer = session.createProducer( destination); for( int i=0; i<100; i++){ //7. 創建消息 TextMessage textMessage = session.createTextMessage( "test" + i); //8. 發布消息 producer.send( textMessage); System.out.println( "發送消息" + textMessage.getText()); } //9. 關閉鏈接 connection.close(); } }

消費者

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class AppConsumer {
    public static final String url = "tcp://127.0.0.1:61616";
    public static final String queueName = "queue-test";

    public static void main(String[] args) throws JMSException{
        //1. 創建ConnectionFactory
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( url);
        
        //2. 創建Connection
        Connection connection = connectionFactory.createConnection();
        
        //3. 啟動鏈接
        connection.start();
        
        //4. 創建會話
        Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE);
        
        //5. 創建一個目標
        Destination destination = session.createQueue( queueName);
        
        //6. 創建一個消費者
        MessageConsumer consumer = session.createConsumer( destination);
        
        //7. 創建一個監聽器
        consumer.setMessageListener( new MessageListener() {
            @Override
            public void onMessage(Message message) {
                TextMessage textMessage = ( TextMessage) message;
                try{
                    System.out.println( "0接收消息" + textMessage.getText());
                }catch( JMSException e){
                    e.printStackTrace();
                }
                
            }
        });
        
        //8. 關閉鏈接
        //connection.close();
    }
}

二、主題模式

生產者

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;



public class AppProducer {
    public static final String url = "tcp://127.0.0.1:61616";
    public static final String topicName = "topic-test";

    public static void main(String[] args) throws JMSException{
        //1. 創建ConnectionFactory
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( url);
        
        //2. 創建Connection
        Connection connection = connectionFactory.createConnection();
        
        //3. 啟動鏈接
        connection.start();
        
        //4. 創建會話
        Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE);
        
        //5. 創建一個目標
        Destination destination = session.createTopic( topicName);
        
        //6. 創建一個生產者
        MessageProducer producer = session.createProducer( destination);
        
        for( int i=0; i<100; i++){
            //7. 創建消息
            TextMessage textMessage = session.createTextMessage( "test" + i);
            //8. 發布消息
            producer.send( textMessage);
            
            System.out.println( "發送消息" + textMessage.getText());
        }
        
        //9. 關閉鏈接
        connection.close();
    }

}

消費者

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class AppConsumer {
    public static final String url = "tcp://127.0.0.1:61616";
    public static final String topicName = "topic-test";

    public static void main(String[] args) throws JMSException{
        //1. 創建ConnectionFactory
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( url);
        
        //2. 創建Connection
        Connection connection = connectionFactory.createConnection();
        
        //3. 啟動鏈接
        connection.start();
        
        //4. 創建會話
        Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE);
        
        //5. 創建一個目標
        Destination destination = session.createTopic( topicName);
        
        //6. 創建一個消費者
        MessageConsumer consumer = session.createConsumer( destination);
        
        //7. 創建一個監聽器
        consumer.setMessageListener( new MessageListener() {
            @Override
            public void onMessage(Message message) {
                TextMessage textMessage = ( TextMessage) message;
                try{
                    System.out.println( "0接收消息" + textMessage.getText());
                }catch( JMSException e){
                    e.printStackTrace();
                }
                
            }
        });
        
        //8. 關閉鏈接
        //connection.close();
    }
}

activeMQ隊列模式和主題模式的Java實現