国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Windows下ActiveMQ的安裝和簡單使用

這篇具有很好參考價值的文章主要介紹了Windows下ActiveMQ的安裝和簡單使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.?官網(wǎng)下載ActiveMQ包,官網(wǎng)地址:Index of /dist/activemq

這里講述的是apache-activemq-5.16.4這個版本,版本請勿隨意使用,其與JDK有相互依賴關(guān)系,如下圖:

Windows下ActiveMQ的安裝和簡單使用

2.?解壓使用

2.1 將下載好的包解壓到本地磁盤:

Windows下ActiveMQ的安裝和簡單使用

?2.2?啟動并訪問。進(jìn)入bin文件夾,雙擊打開“activemq.bat”。

如遇到打開“activemq.bat”黑框一閃而過時,請用命令方式啟動。啟動命令:

activemq-admin.bat start

Windows下ActiveMQ的安裝和簡單使用

?瀏覽器訪問:http://127.0.0.1:8161/,用戶名和密碼都是admin

Windows下ActiveMQ的安裝和簡單使用

Windows下ActiveMQ的安裝和簡單使用

3.?依賴引入

pom.xml增加相關(guān)依賴

        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-spring</artifactId>
            <version>5.16.4</version>
        </dependency>

?4.?相關(guān)代碼

Constant.java

/**
 * 常量類
 */
public class Constant {

    public static String USER = "admin";
    public static String PASSWORD = "admin";
    public static String URL = "failover://tcp://127.0.0.1:61616";
    public static String SUBJECT = "XXX-MSG";

}
MsgTypeEnum.java
public enum MsgTypeEnum {

    TEXT("text", "文本信息"),
//    MAP("map", "Map信息"),
//    STREAM("stream", "流信息"),
    OBJECT("object", "對象信息"),
    BYTES("byte", "字節(jié)信息");

    public String key;

    public String value;

    /**
     * 創(chuàng)建一個新的實例MsgTypeEnum.
     *
     * @param key
     * @param value
     */
    MsgTypeEnum(String key, String value) {
        this.key = key;
        this.value = value;
    }

}

MqMessage.java

import lombok.Data;

import java.io.Serializable;

@Data
public class MqMessage implements Serializable {

    /**
     * 序列化ID
     */
    private static final long serialVersionUID = 7543452786622377175L;

    private String name;

    private Integer id;

}

MqSender.java

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.io.Serializable;

/**
 * 發(fā)送mq消息
 */
public class MqSender {
    private Destination destination = null;
    private Connection conn = null;
    private Session session = null;
    private MessageProducer producer = null;

    /**
     * 獲取conn
     *
     * @return conn conn
     */
    public Connection getConn() {
        return conn;
    }

    /**
     * 初始化
     *
     * @throws Exception
     */
    public void initialize() throws Exception {
        // 連接工廠
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(Constant.USER, Constant.PASSWORD, Constant.URL);
        conn = connectionFactory.createConnection();
        // 事務(wù)性會話,自動確認(rèn)消息
        session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        // 消息的目的地(Queue/Topic)
        destination = session.createQueue(Constant.SUBJECT);
        // destination = session.createTopic(SUBJECT);
        // 消息的提供者(生產(chǎn)者)
        producer = session.createProducer(destination);
        // 不持久化消息
        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
    }

    public void sendMessage(MsgTypeEnum msgTypeEnum, Object msgObject) throws Exception {
        initialize();
        // 連接到JMS提供者(服務(wù)器)
        conn.start();
        switch (msgTypeEnum) {
            // 發(fā)送字節(jié)消息
            case BYTES:
                BytesMessage msg2 = session.createBytesMessage();
                msg2.writeBytes(msgObject.toString().getBytes());
                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
                producer.send(msg2);
                break;
            // 發(fā)送Map消息
//            case MAP:
//                MapMessage msg = session.createMapMessage();
//                msg.setBoolean("boolean", true);
//                msg.setShort("short", (short) 0);
//                msg.setLong("long", 123456);
//                msg.setString("MapMessage", "ActiveMQ Map Message!");
//                producer.send(msg);
//                break;
            // 發(fā)送對象消息
            case OBJECT:
                ObjectMessage msg12 = session.createObjectMessage();
                msg12.setObject((Serializable) msgObject);
                producer.send(msg12);
                break;
            // 發(fā)送流消息
//            case STREAM:
//                StreamMessage msg1 = session.createStreamMessage();
//                msg1.writeBoolean(false);
//                msg1.writeLong(1234567890);
//                producer.send((StreamMessage) msg1);
//                break;
            // 發(fā)送文本消息
            case TEXT:
                TextMessage msg11 = session.createTextMessage();
                msg11.setText((String) msgObject);
                producer.send(msg11);
                break;
            default:
                break;
        }
        close();
    }

    /**
     * 關(guān)閉連接
     *
     * @throws JMSException
     */
    public void close() throws JMSException {
        if (producer != null) {
            producer.close();
        }
        if (session != null) {
            session.close();
        }
        if (conn != null) {
            conn.close();
        }
    }

}

?MqAccept.java

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.util.Enumeration;

/**
 * 接收mq消息
 */
public class MqAccept implements MessageListener {
    private Destination dest = null;
    private Connection conn = null;
    private Session session = null;
    private MessageConsumer consumer = null;

    private boolean stop = false;

    /**
     * 初始化
     *
     * @throws Exception
     */
    private void initialize() throws Exception {
        // 連接工廠是用戶創(chuàng)建連接的對象.
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(Constant.USER, Constant.PASSWORD, Constant.URL);
        // 連接工廠創(chuàng)建一個jms connection
        conn = connectionFactory.createConnection();
        // 是生產(chǎn)和消費的一個單線程上下文。會話用于創(chuàng)建消息的生產(chǎn)者,消費者和消息。會話提供了一個事務(wù)性的上下文。
        session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); // 不支持事務(wù)
        // 目的地是客戶用來指定他生產(chǎn)消息的目標(biāo)還有他消費消息的來源的對象.
        dest = session.createQueue(Constant.SUBJECT);
        // dest = session.createTopic(SUBJECT);
        // 會話創(chuàng)建消息的生產(chǎn)者將消息發(fā)送到目的地
        consumer = session.createConsumer(dest);
    }

    /**
     * 消費消息
     *
     * @throws JMSException
     * @throws Exception
     */
    public void startReceiveMessage() throws JMSException, Exception {
        initialize();
        conn.start();
        consumer.setMessageListener(this);
        // 等待接收消息
        while (!stop) {
            Thread.sleep(5000);
        }

    }

    @SuppressWarnings("rawtypes")
    @Override
    public void onMessage(Message msg) {
        try {
            if (msg instanceof TextMessage) {
                TextMessage message = (TextMessage) msg;
                System.out.println("------Received TextMessage------");
                System.out.println(message.getText());
            } else if (msg instanceof MapMessage) {
                MapMessage message = (MapMessage) msg;
                System.out.println("------Received MapMessage------");
                System.out.println(message.getLong("long"));
                System.out.println(message.getBoolean("boolean"));
                System.out.println(message.getShort("short"));
                System.out.println(message.getString("MapMessage"));
                System.out.println("------Received MapMessage for while------");
                Enumeration enumer = message.getMapNames();
                while (enumer.hasMoreElements()) {
                    Object obj = enumer.nextElement();
                    System.out.println(message.getObject(obj.toString()));
                }
            } else if (msg instanceof StreamMessage) {
                StreamMessage message = (StreamMessage) msg;
                System.out.println("------Received StreamMessage------");
                System.out.println(message.readString());
                System.out.println(message.readBoolean());
                System.out.println(message.readLong());
            } else if (msg instanceof ObjectMessage) {
                System.out.println("------Received ObjectMessage------");
                ObjectMessage message = (ObjectMessage) msg;
                MqMessage mqMessage = (MqMessage) message.getObject();
                System.out.println("name: " + mqMessage.getName());
            } else if (msg instanceof BytesMessage) {
                System.out.println("------Received BytesMessage------");
                BytesMessage message = (BytesMessage) msg;
                byte[] byteContent = new byte[1024];
                int length = -1;
                StringBuffer content = new StringBuffer();
                while ((length = message.readBytes(byteContent)) != -1) {
                    content.append(new String(byteContent, 0, length));
                }
                System.out.println(content.toString());
            } else {
                System.out.println(msg);
            }
            stop = true;
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

    /**
     * 關(guān)閉連接
     *
     * @throws JMSException
     */
    public void close() throws JMSException {
        System.out.println("Consumer:->Closing connection");
        if (consumer != null) {
            consumer.close();
        }
        if (session != null) {
            session.close();
        }
        if (conn != null) {
            conn.close();
        }
    }
}
MQSendMsg.java
public class MQSendMsg {

    public static void sendMsg(MsgTypeEnum type, Object msgObj) throws Exception {
        MqSender sender = new MqSender();
        // 連接到JMS提供者(服務(wù)器)
        sender.initialize();
        sender.getConn().start();
        sender.sendMessage(type, msgObj);
        sender.close();
    }

}

5.?測試代碼

TestReceive.java
public class TestReceive {

    public static void main(String[] args) throws Exception {
        new MqAccept().startReceiveMessage();
    }

}
TestSend.java
public class TestSend {

    public static void main(String[] args) throws Exception {
        MQSendMsg.sendMsg(MsgTypeEnum.TEXT, "這是測試哈123...");
    }

}

測試發(fā)送接收功能

Windows下ActiveMQ的安裝和簡單使用

基礎(chǔ)使用到此結(jié)束!文章來源地址http://www.zghlxwxcb.cn/news/detail-437717.html

到了這里,關(guān)于Windows下ActiveMQ的安裝和簡單使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • postman下載安裝和基礎(chǔ)使用教程(官網(wǎng))

    postman下載安裝和基礎(chǔ)使用教程(官網(wǎng))

    一、下載 1.百度搜索postman,找到官網(wǎng),點擊進(jìn)去 2.點擊Windows的圖標(biāo),進(jìn)入下載頁面 3.點擊Windows64位下載 ? 4.下載完如圖所示,雙擊或右擊進(jìn)行安裝 二、安裝、使用 ?5.點擊第一個即可 ?6.此時瀏覽器會打開一個網(wǎng)址,注冊postman賬號即可 ?7.注冊賬號登錄后,打開postman 8.點擊

    2024年02月15日
    瀏覽(114)
  • Ubuntu系統(tǒng) 不使用snap安裝firefox,使用firefox官網(wǎng)下載的安裝包安裝firefox

    Ubuntu系統(tǒng) 不使用snap安裝firefox,使用firefox官網(wǎng)下載的安裝包安裝firefox

    某天,我嫌棄snap占內(nèi)存,然后我使用以下命令卸載snap 然后無事發(fā)生… 后來我關(guān)機,在開機—— 然后???? 我的firefox不見了,還有其他的軟件不見了… 重新裝snap (為了卸載干凈,之前沒有先卸載snap安裝的包,就直接 sudo apt autoremove --purge snapd ,是卸載不干凈的;也是為

    2024年02月07日
    瀏覽(19)
  • 圖漾相機—windows- Python SDK(官網(wǎng)下載編譯)

    圖漾相機—windows- Python SDK(官網(wǎng)下載編譯)

    Cmake: Cmake官網(wǎng)下載地址:https://cmake.org/download/ 下載下來就是這樣,雙擊打開安裝即可 https://www.swig.org/download.html 在圖漾官網(wǎng)下載中心下載:https://www.percipio.xyz/downloadcenter/。 使用 git 指令獲取本地副本:打開終端,切換到需存放 SDK 的工作目錄下,輸入 git clone 命令克隆遠(yuǎn)程

    2024年02月08日
    瀏覽(22)
  • Typora 免費版下載安裝(超簡單親測適用于Windows)

    Typora 免費版下載安裝(超簡單親測適用于Windows)

    Typora大家都知道, 是一款好用的編輯器和閱讀器。鬼鬼為大家找了一個可使用版本,安裝過程十分簡單,親測有效,不浪費大家時間,現(xiàn)在將Typora分享給大家免費使用。下載鏈接在文章最后。 目錄 前言 一、Typora的介紹 MarkDown是什么 二、Typora的使用 1、如何自動生成目錄 2、

    2023年04月12日
    瀏覽(972)
  • Typora 免費版下載安裝(超簡單親測適用于Windows)與入門

    Typora 免費版下載安裝(超簡單親測適用于Windows)與入門

    Typora大家都知道, 是一款好用的編輯器和閱讀器。鬼鬼為大家找了一個可使用版本,安裝過程十分簡單,親測有效,不浪費大家時間,現(xiàn)在將Typora分享給大家免費使用。下載鏈接在文章最后。 目錄 前言 一、Typora的介紹 MarkDown是什么 二、Typora的使用 1、如何自動生成目錄 2、

    2024年02月06日
    瀏覽(89)
  • 【ISO】Windows10系統(tǒng)ISO鏡像怎么從微軟官網(wǎng)下載?

    【ISO】Windows10系統(tǒng)ISO鏡像怎么從微軟官網(wǎng)下載?

    要自己安裝正版系統(tǒng),第一步就是要下載到正確的系統(tǒng)鏡像。下載的方法很多,可以通過搜索、網(wǎng)盤、網(wǎng)站或者論壇等下載,但那都不是最正宗、最純粹的的,通過這些渠道下載,偶爾、難免也會遇到些心術(shù)不正的人給你夾帶點私貨。 從微軟官網(wǎng)下載Windows10系統(tǒng)鏡像,雖然方

    2024年02月03日
    瀏覽(33)
  • 社區(qū)版pycharm官網(wǎng)下載安裝教程

    社區(qū)版pycharm官網(wǎng)下載安裝教程

    1.官網(wǎng)下載安裝包 官網(wǎng)地址:https://www.jetbrains.com/pycharm/ 選擇所需版本 ? 2.安裝 安裝前確認(rèn)已完成python軟件安裝 建議不要安裝到C盤,路徑不要出現(xiàn)中文 ? ? 直接install,等待安裝 3.配置 點擊桌面快捷方式,首次安裝選擇不需導(dǎo)入設(shè)置的選項 彈出用戶設(shè)置的界面,直接點擊關(guān)

    2024年02月11日
    瀏覽(23)
  • 如何安裝matlab?官網(wǎng)下載詳細(xì)教程

    如何安裝matlab?官網(wǎng)下載詳細(xì)教程

    很多人在遇到專業(yè)數(shù)據(jù)處理時都得用到專業(yè)的數(shù)學(xué)軟件,matlab就是這樣一款對于數(shù)據(jù)處理非常有幫助的支持?jǐn)?shù)據(jù)分析、算法開發(fā)和建模的專業(yè)工科數(shù)學(xué)軟件。那么,怎么可以快速的正確安裝?下面就教你如何在官網(wǎng)上實現(xiàn)matlab的下載安裝!? MATLAB - 技術(shù)計算語言 產(chǎn)品信息 -

    2023年04月08日
    瀏覽(90)
  • 最新版 Whatsapp 官網(wǎng)下載安裝

    最新版 Whatsapp 官網(wǎng)下載安裝

    WhatsApp官網(wǎng)地址 為: https://www.whatsapp.com/ 是 唯一的WhatsApp官方入口 ,但是在國內(nèi)是不能正常訪問的,必須要翻墻才能訪問。如果你還不會科學(xué)上網(wǎng),可以網(wǎng)上自己學(xué)習(xí)一下。 因為國內(nèi)的很多安卓手機都是沒有安裝 Google Play 應(yīng)用市場的,在手機的應(yīng)用市場里搜索WhatsApp是搜不

    2024年02月04日
    瀏覽(558)
  • Git快速入門篇—— Windows版本淘寶鏡像快速下載安裝詳細(xì)步驟及簡單入門教程(附帶圖文教程)

    Git快速入門篇—— Windows版本淘寶鏡像快速下載安裝詳細(xì)步驟及簡單入門教程(附帶圖文教程)

    前言:我們平時在整理代碼的時候,尤其是與別人一起開發(fā)項目的時候,常常涉及到代碼的更新,因此代碼版本問題成了一個很頭痛的事。而git正是為了解決這種問題而誕生。本文將詳細(xì)介紹如何通過淘寶鏡像進(jìn)行g(shù)it的安裝以及git的簡單入門技巧。 下一章: git與遠(yuǎn)程倉庫的交

    2024年02月03日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包