JMS即Java消息服務(Java Message Service)應用程序接口,是一個Java平臺中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分佈式系統中發送消息,進行異步通訊。Java消息服務是一個與具體平臺無關的API,絕大多數MOM提供商都對JMS提供支持。java
Apache ActiveMQ是Apache軟件基金會所研發的開放源代碼消息中間件;因爲ActiveMQ是一個純Java程序,所以只須要操做系統支持Java虛擬機,ActiveMQ即可執行。apache
下載Apache ActiveMQ服務服務器
下載後將zip 壓縮包解壓,將這個解壓縮後的文件夾拷貝到指定位置,我本人的服務都在c盤下的service文件夾session
找到C:\service\apache-activemq\bin\win64下的activemq.bat文件雙擊便可啓動activemq服務器,以下圖異步
說明已經啓動完畢,能夠登陸主頁面查看ActiveMQ的相關內容,若是對話框一閃而過則須要配置環境變量分佈式
打開網頁,在地址欄輸入http://127.0.0.1:8161操作系統
用戶名,密碼都是admin開放源代碼
並將apache-activemq目錄下的activemq-all.5.15.10.jar拷貝到工程中lib文件夾下,便可使用ActiveMQ的全部功能。線程
ActiveMQ點對點消息實現:使用方式首先啓動消息生產者發送消息,而後啓動消費者接收消息中間件
建立JMSProducer.java(消息生產者)
package com.kingsoft.activemq.unit01;
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.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory;
/** * * @ClassName: JMSProducer * @Description: TODO (消息生產者) * @author A我去 * @date 2019年10月11日下午11:16:53 */ public class JMSProducer {
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER; private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL; private static final int SENDNUM = 10; //發送消息的數量
/** * * <b>Description</b><br> * (發送消息) * <br> * -------------------------------------------------<br> * <b>A我去 2019年10月11日 下午11:30:44</b> */ public static void sendMessage(Session session, MessageProducer producer) throws Exception{ for(int i=0;i<JMSProducer.SENDNUM;i++) { TextMessage message = session.createTextMessage("ActiveMQ 發送的消息"+i); System.out.println("發送消息:"+"ActiveMQ 發送的消息"+i); producer.send(message); } }
public static void main(String[] args) { ConnectionFactory connectionFactory; //鏈接工廠 Connection connection = null; //鏈接 Session session = null; //會話(接受或發送消息的線程) Destination destination; //消息目的地 MessageProducer producer; //消息生產者
//1.實例化鏈接工廠 connectionFactory = new ActiveMQConnectionFactory( JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL); try { //2.經過鏈接工廠獲取鏈接 connection = connectionFactory.createConnection(); //3.啓動鏈接 connection.start(); //4.建立Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); //5.建立消息隊列 destination = session.createQueue("first-quque1"); //6.建立消息生產者 producer = session.createProducer(destination); //7.發送消息 sendMessage(session, producer); //8.session提交 session.commit(); } catch (JMSException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }finally { //關閉session if(session!=null) { try { session.close(); } catch (JMSException e) { e.printStackTrace(); } } //關閉鏈接 if(connection != null) { try { connection.close(); } catch (JMSException e) { e.printStackTrace(); } } } } } |