Windows下ActiveMQ的安装和简单使用

这篇具有很好参考价值的文章主要介绍了Windows下ActiveMQ的安装和简单使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 官网下载ActiveMQ包,官网地址:Index of /dist/activemq

这里讲述的是apache-activemq-5.16.4这个版本,版本请勿随意使用,其与JDK有相互依赖关系,如下图:

Windows下ActiveMQ的安装和简单使用

2. 解压使用

2.1 将下载好的包解压到本地磁盘:

Windows下ActiveMQ的安装和简单使用

 2.2 启动并访问。进入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增加相关依赖

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

 4. 相关代码

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", "字节信息");

    public String key;

    public String value;

    /**
     * 创建一个新的实例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;

/**
 * 发送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();
        // 事务性会话,自动确认消息
        session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        // 消息的目的地(Queue/Topic)
        destination = session.createQueue(Constant.SUBJECT);
        // destination = session.createTopic(SUBJECT);
        // 消息的提供者(生产者)
        producer = session.createProducer(destination);
        // 不持久化消息
        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
    }

    public void sendMessage(MsgTypeEnum msgTypeEnum, Object msgObject) throws Exception {
        initialize();
        // 连接到JMS提供者(服务器)
        conn.start();
        switch (msgTypeEnum) {
            // 发送字节消息
            case BYTES:
                BytesMessage msg2 = session.createBytesMessage();
                msg2.writeBytes(msgObject.toString().getBytes());
                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
                producer.send(msg2);
                break;
            // 发送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;
            // 发送对象消息
            case OBJECT:
                ObjectMessage msg12 = session.createObjectMessage();
                msg12.setObject((Serializable) msgObject);
                producer.send(msg12);
                break;
            // 发送流消息
//            case STREAM:
//                StreamMessage msg1 = session.createStreamMessage();
//                msg1.writeBoolean(false);
//                msg1.writeLong(1234567890);
//                producer.send((StreamMessage) msg1);
//                break;
            // 发送文本消息
            case TEXT:
                TextMessage msg11 = session.createTextMessage();
                msg11.setText((String) msgObject);
                producer.send(msg11);
                break;
            default:
                break;
        }
        close();
    }

    /**
     * 关闭连接
     *
     * @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 {
        // 连接工厂是用户创建连接的对象.
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(Constant.USER, Constant.PASSWORD, Constant.URL);
        // 连接工厂创建一个jms connection
        conn = connectionFactory.createConnection();
        // 是生产和消费的一个单线程上下文。会话用于创建消息的生产者,消费者和消息。会话提供了一个事务性的上下文。
        session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); // 不支持事务
        // 目的地是客户用来指定他生产消息的目标还有他消费消息的来源的对象.
        dest = session.createQueue(Constant.SUBJECT);
        // dest = session.createTopic(SUBJECT);
        // 会话创建消息的生产者将消息发送到目的地
        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();
        }
    }

    /**
     * 关闭连接
     *
     * @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提供者(服务器)
        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...");
    }

}

测试发送接收功能

Windows下ActiveMQ的安装和简单使用

基础使用到此结束!文章来源地址https://www.toymoban.com/news/detail-437717.html

到了这里,关于Windows下ActiveMQ的安装和简单使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • postman下载安装和基础使用教程(官网)

    一、下载 1.百度搜索postman,找到官网,点击进去 2.点击Windows的图标,进入下载页面 3.点击Windows64位下载   4.下载完如图所示,双击或右击进行安装 二、安装、使用  5.点击第一个即可  6.此时浏览器会打开一个网址,注册postman账号即可  7.注册账号登录后,打开postman 8.点击

    2024年02月15日
    浏览(97)
  • Ubuntu系统 不使用snap安装firefox,使用firefox官网下载的安装包安装firefox

    某天,我嫌弃snap占内存,然后我使用以下命令卸载snap 然后无事发生… 后来我关机,在开机—— 然后???? 我的firefox不见了,还有其他的软件不见了… 重新装snap (为了卸载干净,之前没有先卸载snap安装的包,就直接 sudo apt autoremove --purge snapd ,是卸载不干净的;也是为

    2024年02月07日
    浏览(37)
  • 图漾相机—windows- Python SDK(官网下载编译)

    Cmake: Cmake官网下载地址:https://cmake.org/download/ 下载下来就是这样,双击打开安装即可 https://www.swig.org/download.html 在图漾官网下载中心下载:https://www.percipio.xyz/downloadcenter/。 使用 git 指令获取本地副本:打开终端,切换到需存放 SDK 的工作目录下,输入 git clone 命令克隆远程

    2024年02月08日
    浏览(73)
  • Typora 免费版下载安装(超简单亲测适用于Windows)

    Typora大家都知道, 是一款好用的编辑器和阅读器。鬼鬼为大家找了一个可使用版本,安装过程十分简单,亲测有效,不浪费大家时间,现在将Typora分享给大家免费使用。下载链接在文章最后。 目录 前言 一、Typora的介绍 MarkDown是什么 二、Typora的使用 1、如何自动生成目录 2、

    2023年04月12日
    浏览(174)
  • Typora 免费版下载安装(超简单亲测适用于Windows)与入门

    Typora大家都知道, 是一款好用的编辑器和阅读器。鬼鬼为大家找了一个可使用版本,安装过程十分简单,亲测有效,不浪费大家时间,现在将Typora分享给大家免费使用。下载链接在文章最后。 目录 前言 一、Typora的介绍 MarkDown是什么 二、Typora的使用 1、如何自动生成目录 2、

    2024年02月06日
    浏览(69)
  • 【ISO】Windows10系统ISO镜像怎么从微软官网下载?

    要自己安装正版系统,第一步就是要下载到正确的系统镜像。下载的方法很多,可以通过搜索、网盘、网站或者论坛等下载,但那都不是最正宗、最纯粹的的,通过这些渠道下载,偶尔、难免也会遇到些心术不正的人给你夹带点私货。 从微软官网下载Windows10系统镜像,虽然方

    2024年02月03日
    浏览(69)
  • 如何安装matlab?官网下载详细教程

    很多人在遇到专业数据处理时都得用到专业的数学软件,matlab就是这样一款对于数据处理非常有帮助的支持数据分析、算法开发和建模的专业工科数学软件。那么,怎么可以快速的正确安装?下面就教你如何在官网上实现matlab的下载安装!  MATLAB - 技术计算语言 产品信息 -

    2023年04月08日
    浏览(59)
  • 社区版pycharm官网下载安装教程

    1.官网下载安装包 官网地址:https://www.jetbrains.com/pycharm/ 选择所需版本   2.安装 安装前确认已完成python软件安装 建议不要安装到C盘,路径不要出现中文     直接install,等待安装 3.配置 点击桌面快捷方式,首次安装选择不需导入设置的选项 弹出用户设置的界面,直接点击关

    2024年02月11日
    浏览(62)
  • 最新版 Whatsapp 官网下载安装

    WhatsApp官网地址 为: https://www.whatsapp.com/ 是 唯一的WhatsApp官方入口 ,但是在国内是不能正常访问的,必须要翻墙才能访问。如果你还不会科学上网,可以网上自己学习一下。 因为国内的很多安卓手机都是没有安装 Google Play 应用市场的,在手机的应用市场里搜索WhatsApp是搜不

    2024年02月04日
    浏览(126)
  • Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)

    前言:我们平时在整理代码的时候,尤其是与别人一起开发项目的时候,常常涉及到代码的更新,因此代码版本问题成了一个很头痛的事。而git正是为了解决这种问题而诞生。本文将详细介绍如何通过淘宝镜像进行git的安装以及git的简单入门技巧。 下一章: git与远程仓库的交

    2024年02月03日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包