activeMq-helloworld-01

activemq 是JMS 規(guī)范的一種實現(xiàn),我們先不討論JMS,也不先討論應用場景,我們先來感受一下這個消息中間件是怎么玩的。

  1. 安裝(略)---百度

1.1 啟動:win (不要究竟是否在linux 上,最簡單的先玩起來)

./bin/activemq start

訪問:http://127.0.0.1:8161/admin 后臺管理,默認密碼 admin/admin

2: java 客戶端操作

maven:
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-all</artifactId>
            <version>5.15.13</version>
        </dependency>
java:
// p2p helloworld 點對點通信,消息發(fā)送者, 類比 jdbc 

public class HelloWorldSender {

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

        //1.客戶端連接到服務器
        ConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
        //2.創(chuàng)建一次連接
        Connection connection = activeMQConnectionFactory.createConnection();
        //3.開啟
        connection.start();
        //4. 創(chuàng)建session 對象
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5. 創(chuàng)建一個隊列
        Queue queue = session.createQueue("test-hello");
        //6. 創(chuàng)建消息發(fā)送者
        MessageProducer producer = session.createProducer(queue);
        //7. 發(fā)送消息
        producer.send(session.createTextMessage("hello world"));
        //關閉資源
        producer.close();
        session.close();
        connection.close();
    }
}

上面是我們使用activemq 實現(xiàn)了一個簡單的p2p 的消息投遞,主要涉及對象:

  1. ConnectionFactory : 連接工廠,就是連接到activemq 服務端(C/S 架構)
  2. Connection : 由ConnectionFactory 創(chuàng)建來的一個連接
  3. Session : 由 Connection 創(chuàng)建而來的 一個session 對象,表示一次和服務端的會話
  4. Queue : 由 Session 創(chuàng)建的一個隊列,用來存儲消息。
  5. MessageProducer : 消息發(fā)送者
java: 消費者
public class HelloWorldCustomer {
    public static void main(String[] args) throws JMSException {
        //1. 創(chuàng)建連接工廠
        ConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
        //2.創(chuàng)建一個連接
        Connection connection = activeMQConnectionFactory.createConnection();
        //3.開啟
        connection.start();
        //4.創(chuàng)建一個session
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5.創(chuàng)建一個Queue 隊列
        Queue queue = session.createQueue("test-hello");
        // 6.消費消息
        MessageConsumer consumer = session.createConsumer(queue);
        TextMessage message = (TextMessage) consumer.receive();
        String messageText = message.getText();
        System.out.println(messageText);
        // 關閉資源
        consumer.close();
        session.close(); 
        connection.close(); 
    }
}

上面我們創(chuàng)建了一個消費者。

我們現(xiàn)在對activemq 中間件有了最初步的認識,接下來我們就來說一下 JMS 規(guī)范,運用場景的話簡單說一下:系統(tǒng)內(nèi)部解耦,多系統(tǒng)通信,分布式事務,流量削峰。。。
JMS: (百度)
JMS即Java消息服務(Java Message Service)應用程序接口,是一個Java平臺中關于面向消息中間件(MOM)的API,用于在兩個應用程序之間,或分布式系統(tǒng)中發(fā)送消息,進行異步通信。Java消息服務是一個與具體平臺無關的API,絕大多數(shù)MOM提供商都對JMS提供支持。
簡單點說:就是JMS 是定義消息中間的開發(fā)規(guī)范 api ,比如jdbc 一樣,有很多實現(xiàn)。activemq 就是jms 規(guī)范的實現(xiàn)之一。

jms 具體內(nèi)容:

  1. 架構體系組成,也就是構造角色有:
  • jms 服務端(activemq server 服務器)
  • jms 客戶端 (activemq client)
  • jms 消息發(fā)送者(MessageProducer )
  • jms 消息消費者 (MessageConsumer )
  • jms 隊列 (Queue )
  • jms 主題 (Topic)
  • jms 消息 (Message)

上面的jms 規(guī)范定義了這些組成角色,也就是說,如果 jms 規(guī)范的實現(xiàn) 必須要有以上實現(xiàn)以上角色的對象。

  1. 抽象出的編程接口 api :
  • ConnectionFactory 接口(連接工廠)
  • Connection 接口(連接)
  • Destination 接口(目標 )--- activemq 中的 Queue 或者 Topic
  • Session 接口(會話)
  • MessageProducer 接口(消息生產(chǎn)者)
  • MessageConsumer 接口(消息消費者)
  • Message 接口(消息)

是否對 對編程接口非常熟悉?是的,我們可以在 helloworld 中可以找到這些對象,也說明了 activemq 就是對jms 規(guī)范的實現(xiàn)。

  1. 消息通信模型:
  • p2p 點對點 模式
  • topic 發(fā)布/訂閱模式

上面是jms 規(guī)定的消息模型,也是activemq 中的兩種消息模型。具體的點對點或者topic 具有的特點,我們會在后面說明。如迫不及待想知道,可以百度查詢。上訴jms規(guī)范來自百度,僅為個人解讀。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容