ActiveMQ(下載,啓動,java程序中 如何操做)

爲了快速上手ActiveMQ 找個一個windows版本的mq來實現它的功能html

1.http://activemq.apache.org/activemq-5158-release.html 下載java

2.解壓文件apache

3.根據本身電腦的位數,選擇 是32位仍是64位啓動windows

4.雙擊 activemp.bat 啓動mq後端

5.啓動成功之後能夠請求反問mq管理後端地址:127.0.0.1:8161服務器

6.第一次默認登陸帳戶和密碼 都是admin session

7.雙擊Queuestcp

name:隊列名字ide

Number Of Pending Messages 等待消費的消息 這個是當前未出隊列的數量。能夠理解爲總接收數-總出隊列數 測試

Number Of Consumers  消費者 這個是消費者端的消費者數量 
Messages Enqueued 進入隊列的消息  進入隊列的總數量,包括出隊列的。 這個數量只增不減 
Messages Dequeued 出了隊列的消息  能夠理解爲是消費這消費掉的數量 

 

8.根據隊列的變化狀況,7圖中的各個數據都會出現相應的變化

9.pom.xml中引入 ActiveMQ的依賴

<dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
            <version>5.7.0</version>
        </dependency>

10.java MQ 生產者測試代碼:

  

package com.example.demo.producter; import javax.jms.Connection; import javax.jms.DeliveryMode; 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 ActiveMqProducter { public static String url = "tcp://127.0.0.1:61616"; public static void main(String[] args) throws JMSException { // 根據用戶名 和密碼,地址,獲取JMS 的鏈接工廠 61616端口 是mq服務的端口 而8161 是mq提供的管理後端的端口
        ActiveMQConnectionFactory connetionFactory = new ActiveMQConnectionFactory("admin", "admin", url); // 從鏈接工廠建立一條鏈接
        Connection connection = connetionFactory.createConnection(); // 開啓鏈接
 connection.start(); // 建立session會話,第一參數表示啓用事務處理,第二個參數表示啓動哪一種應答模式,這裏啓用的是自動應答 一個相似 接受 或者發送的線程
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 用session建立一個
        Destination destination = session.createQueue("mq-msg"); // MessageProducer:消息生產者
        MessageProducer producer = session.createProducer(destination); // 設置不持久化
 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); // 發送一條消息
        for (int i = 1; i <= 5; i++) { sendMsg(session, producer, i); } connection.close(); } /** * 在指定的會話上,經過指定的消息生產者發出一條消息 * * @param session * 消息會話 * @param producer * 消息生產者 */
    public static void sendMsg(Session session, MessageProducer producer, int i) throws JMSException { // 建立一條文本消息
        TextMessage message = session.createTextMessage("Hello ActiveMQ!" + i); // 經過消息生產者發出消息
 producer.send(message); } }

 

 運行測試類之前:

 

 運行測試類之後:

11 建立MQ java的消費者代碼:

package com.example.demo.consumer; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; public class Consumer { public static void main(String[] args) throws JMSException { // ConnectionFactory :鏈接工廠,JMS 用它建立鏈接
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin", "admin", "tcp://127.0.0.1:61616"); // JMS 客戶端到JMS Provider 的鏈接
        Connection connection = connectionFactory.createConnection(); connection.start(); // Session: 一個發送或接收消息的線程
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // Destination :消息的目的地;消息發送給誰. // 獲取session注意參數值xingbo.xu-queue是一個服務器的queue,須在在ActiveMq的console配置
        Destination destination = session.createQueue("mq-msg"); // 消費者,消息接收者
        MessageConsumer consumer = session.createConsumer(destination); while (true) { TextMessage message = (TextMessage) consumer.receive(); if (null != message) { System.out.println("收到消息:" + message.getText()); } else
                break; } session.close(); connection.close(); } }

 

運行消費者之後:

管理後端的數據變化:

 

 

 

12.經過簡單的代碼,能夠看出,生產者生產消息放到隊列之後,若是沒有消費者消費,則消息會一直存放在隊列裏(關閉MQ,沒有持久化除外),直到消費者成功消費完隊列的消息,消費成功 則通知隊列,清除該消息

相關文章
相關標籤/搜索