1. 程式人生 > >ActiveMQ訊息中介軟體-hello world

ActiveMQ訊息中介軟體-hello world

生產者

package com.wuk.mq;

import java.util.concurrent.TimeUnit;

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

import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * 生產者
 * @author Administrator
 *
 */
public class Send {

	public static void main(String[] args) throws Exception {
		
		 //1、建立工廠連線物件,需要制定ip和埠號  預設埠號為tcp://127.0.0.1:61616
		ConnectionFactory connectionFactory=new ActiveMQConnectionFactory
				(ActiveMQConnectionFactory.DEFAULT_USER, 
				ActiveMQConnectionFactory.DEFAULT_PASSWORD, 
				"tcp://127.0.0.1:61616");
		 //2、使用連線工廠建立一個連線物件
		Connection connection=connectionFactory.createConnection();
		//3、開啟連線
		connection.start();		
		//4、使用連線物件建立會話(session)物件
		//引數1 是是否啟用事務 引數2 簽收模式,一般是自動簽收
		Session session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
		//5、使用會話物件建立目標物件,包含queue和topic(一對一和一對多)
		Destination destination=session.createQueue("test-queue");
		//6、使用會話物件建立生產者物件
		MessageProducer producer=session.createProducer(destination);
		
		//設定持久化和非持久化狀態
		//producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

		//7、使用會話物件建立一個訊息物件
		for(int i=0;i<10;i++){
			TextMessage textMessage= session.createTextMessage("我是訊息內容"+i);
			//8、傳送訊息
			//producer.send(destination, message, deliveryMode, priority, timeToLive);
			//第一個引數是目標地址
			//第二個引數是具體的資料資訊
			//第三個引數是傳輸資料的模式
			//第四個引數是優先順序
			//第五個引數是訊息的過期時間
			producer.send(destination,textMessage);
			TimeUnit.SECONDS.sleep(1);
		}
		//9、關閉資源
		if(producer!=null){
			producer.close();
		}
		if(session!=null){
			session.close();
		}
		if(connection!=null){
			connection.close();
		}
	   
	}

}

消費者

package com.wuk.mq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * 消費者
 * 
 * @author Administrator
 *
 */
public class Receive {

	public static void main(String[] args) throws Exception {

		// 1、建立工廠連線物件,需要制定ip和埠號 預設埠號為tcp://127.0.0.1:61616
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
				ActiveMQConnectionFactory.DEFAULT_USER,
				ActiveMQConnectionFactory.DEFAULT_PASSWORD,
				"tcp://127.0.0.1:61616");
		// 2、使用連線工廠建立一個連線物件
		Connection connection = connectionFactory.createConnection();
		// 3、開啟連線
		connection.start();

		// 4、使用連線物件建立會話(session)物件
		// 引數1 是是否啟用事務 引數2 簽收模式,一般是自動簽收
		Session session = connection.createSession(Boolean.FALSE,
				Session.AUTO_ACKNOWLEDGE);
		// 5、使用會話物件建立目標物件,包含queue和topic(一對一和一對多)
		Destination destination = session.createQueue("test-queue");
		// 6、使用會話物件建立消費者物件
		MessageConsumer consumer = session.createConsumer(destination);
		
		while(true){
			
			TextMessage textMessage=(TextMessage) consumer.receive();
			System.out.println("消費資料"+textMessage.getText());
			
		}
	}
}