ActiveMQ要入門什么

本篇文章給大家分享的是有關(guān)ActiveMQ要入門什么,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運(yùn)營、重慶APP開發(fā)公司、手機(jī)網(wǎng)站開發(fā)、微信網(wǎng)站制作、軟件開發(fā)、成都服務(wù)器托管等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。

1. 發(fā)布消息

import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;

public class BookProducer implements Runnable{
    public static final String BROKER_URL = "tcp://localhost:61616";
    @Override
    public void run() {
        try {
            //1.創(chuàng)建連接工廠,指定ip和端口
            ConnectionFactory factory = new ActiveMQConnectionFactory(BROKER_URL);
            //2.使用連接工廠創(chuàng)建一個連接對象
            Connection connection = factory.createConnection();
            //3.開啟連接(JMS會話)
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            //使用會話創(chuàng)建目的地
            /**
             * ① 點(diǎn)對點(diǎn)(Point-to-Point)。在點(diǎn)對點(diǎn)的消息系統(tǒng)中,消息分發(fā)給一個單獨(dú)的使用者。點(diǎn)對點(diǎn)消息往往與隊(duì)列(javax.jms.Queue)相關(guān)聯(lián)。
             * ② 發(fā)布/訂閱(Publish/Subscribe)。發(fā)布/訂閱消息系統(tǒng)支持一個事件驅(qū)動模型,消息生產(chǎn)者和消費(fèi)者都參與消息的傳遞。生產(chǎn)者發(fā)布事件,
                  而使用者訂閱感興趣的事件,并使用事件。該類型消息一般與特定的主題(javax.jms.Topic)關(guān)聯(lián)。
             */
            Destination destination = session.createQueue("book-broker")
            //創(chuàng)建生產(chǎn)者/消費(fèi)者
            MessageProducer producer = session.createProducer(destination);
            // MessageConsumer consumer = session.createConsumer(destination);
            //consumer.receive();
            /**
             * 創(chuàng)建消息,支持的消息類型:
             *  TextMessage
             *  MapMessage
             *  ObjectMessage:對象需要實(shí)現(xiàn)序列化接口
             *  BytesMessage
             *  StreamMessage
             */
            Message message = session.createTextMessage("我是一個香蕉.......");
            //發(fā)送消息
            producer.send(message);
            //釋放資源
            producer.close();
            session.close();
            connection.close();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

2. 接收消息

import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Session;
import javax.jms.TextMessage;

public class BookConsumer implements Runnable {
    @Override
    public void run() {
        try {
            var connection = new ActiveMQConnectionFactory(BookProducer.BROKER_URL).createConnection();
            connection.start();
            /**
             * connection.createSession(boolean transacted, int acknowledgeMode);
             * transacted:是否使用事務(wù)
             * acknowledgeMode:應(yīng)答模式
             *     AUTO_ACKNOWLEDGE:自動應(yīng)答
             *          對于同步消費(fèi)者,receive方法調(diào)用返回,且沒有異常發(fā)生時,將自動對收到的消息予以確認(rèn).
             *          對于異步消息,當(dāng)onMessage方法返回,且沒有異常發(fā)生時,即對收到的消息自動確認(rèn).
             *     CLIENT_ACKNOWLEDGE:客戶端手動應(yīng)答
             *          這種方式要求客戶端使用javax.jms.Message.acknowledge()方法完成確認(rèn).
             *     DUPS_OK_ACKNOWLEDGE:延時//批量通知
             *          這種確認(rèn)方式允許JMS不必急于確認(rèn)收到的消息,允許在收到多個消息之后一次完成確認(rèn),
                       與Auto_AcKnowledge相比,這種確認(rèn)方式在某些情況下可能更有效,
                       因?yàn)闆]有確認(rèn),當(dāng)系統(tǒng)崩潰或者網(wǎng)絡(luò)出現(xiàn)故障的時候,消息可以被重新傳遞.
             *     使用事務(wù)消息確認(rèn)模式:
             *     SESSION_TRANSACTED
             */
            var session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            var consumer = session.createConsumer(session.createQueue("tmall-queue"));
            var message = ((TextMessage)consumer.receive()).getText();
            System.out.println(message);
            session.close();
            connection.close();
    }
}

      或者設(shè)置監(jiān)聽器接收(消費(fèi)者不用一直在線,監(jiān)聽到消息自動接收)

import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Session;
import javax.jms.TextMessage;

public class BookConsumer implements Runnable {
    @Override
    public void run() {
        try {
            var connection = new ActiveMQConnectionFactory(BookProducer.BROKER_URL).createConnection();
            connection.start();
            var session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            var consumer = session.createConsumer(session.createQueue("tmall-queue"));
            consumer.setMessageListener(message -> {
                try {
                    System.out.println(((TextMessage) message).getText());
                }catch (JMSException e){
                    e.printStackTrace();
                }
            });
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

3. java內(nèi)嵌ActiveMQ,自動啟動一個ActiveMQ,不需要Linux啟動

import org.apache.activemq.broker.BrokerService;

public class Broker {
    //導(dǎo)入依賴compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.9'
    public void producter(){
        BrokerService brokerService = new BrokerService();
        brokerService.setUseJmx(true);//設(shè)置Broker的服務(wù)是否應(yīng)該公開給JMX
        try {
            brokerService.addConnector("tcp://localhost:61616");
            brokerService.start(); 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上就是ActiveMQ要入門什么,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前文章:ActiveMQ要入門什么
文章URL:http://muchs.cn/article42/gpjphc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航企業(yè)網(wǎng)站制作、App開發(fā)、網(wǎng)頁設(shè)計公司、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)