`

MQ初级学习

    博客分类:
  • MQ
阅读更多
1.下载ActiveMQ
去官方网站下载:http://activemq.apache.org/

2.运行ActiveMQ
解压缩apache-activemq-5.9.0-bin.zip到C盘,然后双击apache-activemq-5.9.0-\bin\activemq-admin.bat运行ActiveMQ程序。

启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue。用户名:admin 密码:admin

3.创建Eclipse项目并运行
创建project:ActiveMQ,并导入apache-activemq-5.9.0目录下activemq-all-5.9.0.jar文件
3.1.Sender.java
package com.xuwei.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class Sender {
    private static final int SEND_NUMBER = 5;

    public static void main(String[] args) {
        // ConnectionFactory :连接工厂,JMS 用它创建连接
        ConnectionFactory connectionFactory;
        // Connection :JMS 客户端到JMS Provider 的连接
        Connection connection = null;
        // Session: 一个发送或接收消息的线程
        Session session;
        // Destination :消息的目的地;消息发送给谁.
        Destination destination;
        // MessageProducer:消息发送者
        MessageProducer producer;
        // TextMessage message;
        // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
        connectionFactory = new ActiveMQConnectionFactory(
                ActiveMQConnection.DEFAULT_USER,
                ActiveMQConnection.DEFAULT_PASSWORD,
                "tcp://localhost:61616");
        try {
            // 构造从工厂得到连接对象
            connection = connectionFactory.createConnection();
            // 启动
            connection.start();
            // 获取操作连接
            session = connection.createSession(Boolean.TRUE,
                    Session.AUTO_ACKNOWLEDGE);
            // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
            destination = session.createQueue("FirstQueue");
            // 得到消息生成者【发送者】
            producer = session.createProducer(destination);
            // 设置不持久化,此处学习,实际根据项目决定
            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
            // 构造消息,此处写死,项目就是参数,或者方法获取
            sendMessage(session, producer);
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != connection)
                    connection.close();
            } catch (Throwable ignore) {
            }
        }
    }

    public static void sendMessage(Session session, MessageProducer producer)
            throws Exception {
        for (int i = 1; i <= SEND_NUMBER; i++) {
            TextMessage message = session
                    .createTextMessage("ActiveMq 发送的消息" + i);
            // 发送消息到目的地方
            System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);
            producer.send(message);
        }
    }
}


3.2.Receiver.java
package com.xuwei.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class Receiver {
    public static void main(String[] args) {
        // ConnectionFactory :连接工厂,JMS 用它创建连接
        ConnectionFactory connectionFactory;
        // Connection :JMS 客户端到JMS Provider 的连接
        Connection connection = null;
        // Session: 一个发送或接收消息的线程
        Session session;
        // Destination :消息的目的地;消息发送给谁.
        Destination destination;
        // 消费者,消息接收者
        MessageConsumer consumer;
        connectionFactory = new ActiveMQConnectionFactory(
                ActiveMQConnection.DEFAULT_USER,
                ActiveMQConnection.DEFAULT_PASSWORD,
                "tcp://localhost:61616");
        try {
            // 构造从工厂得到连接对象
            connection = connectionFactory.createConnection();
            // 启动
            connection.start();
            // 获取操作连接
            session = connection.createSession(Boolean.FALSE,
                    Session.AUTO_ACKNOWLEDGE);
            // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
            destination = session.createQueue("FirstQueue");
            consumer = session.createConsumer(destination);
            while (true) {
                //设置接收者接收消息的时间,为了便于测试,这里谁定为100s
                TextMessage message = (TextMessage) consumer.receive(100000);
                if (null != message) {
                    System.out.println("收到消息" + message.getText());
                } else {
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != connection)
                    connection.close();
            } catch (Throwable ignore) {
            }
        }
    }
}


4.注意事项
1.最后接收者跟发送者在不同的机器上测试
2.项目所引用的jar最后在ActiveMQ下的lib中找,这样不会出现版本冲突。
5.测试过程
因为是在单机上测试,所以需要开启两个eclipse,每一个eclipse都有自身的workspace。我们在eclipse1中运行Receiver,在eclipse2中运行Sender。

刚开始eclipse1中运行Receiver以后console介面没有任何信息,在eclipse2中运行Sender以后,eclipse2中的console显示如下信息:

发送消息:ActiveMq 发送的消息1
发送消息:ActiveMq 发送的消息2
发送消息:ActiveMq 发送的消息3
发送消息:ActiveMq 发送的消息4
发送消息:ActiveMq 发送的消息5

而回到eclipse1中发现console界面出现如下信息:

收到消息ActiveMq 发送的消息1
收到消息ActiveMq 发送的消息2
收到消息ActiveMq 发送的消息3
收到消息ActiveMq 发送的消息4
收到消息ActiveMq 发送的消息5
分享到:
评论

相关推荐

    初级java笔试题-mq_projects:mq_projects

    初级java笔试题麦考瑞大学项目 2014 年第 1 届会议至 2017 年第 2 届会议 2017年第2期 ISYS358 - 计算行业项目 本单元将之前单元中的学习结合起来,为学生的工作做好准备。 学生以团队形式合作制定项目计划,该计划...

    学习英语链接.txt

    这些资源涵盖了不同层次、不同需求的学习者,从初级到高级,从语法练习到口语交流,从听力训练到阅读理解,应有尽有。 ### 1. ChineseWorld - **网址**: - **简介**: 提供中文背景下的英语学习资料,适合中国学生...

    MT4编程学习大全

    "李沂鸿原创MT4+EA+制作速成班"系列课程是进阶学习的好材料,分为初级和中级篇,覆盖了从基本概念到复杂策略的全面内容。"MT4编程入门详解-有图表.doc"和"MT4_MQL4_编程参考_简体中文版.pdf"则提供了丰富的图表和...

    sap abap ibm初级入门资料(一)

    通过学习这本"IBM初级入门资料",你将掌握ABAP的基本概念和常用编程技巧,为进一步深入学习和实践打下坚实基础。记住,实践是检验真理的唯一标准,理论知识要结合实际项目才能更好地理解和运用。

    江苏省高邮市龙虬初级中学2015届九年级物理上学期学生学业质量调查分析与反馈试题(扫描版) 苏科版

    此文档标题和描述表明这是一份2015年江苏省高邮市龙虬初级中学九年级物理上学期的学生学业质量调查分析与反馈试题,采用的是苏科版教材。标签为“课件”,暗示这是一个教学资源,可能是教师用于评估学生物理学习情况...

    基于51单片机的烟雾报警.zip

    51单片机,作为微控制器领域的经典之作,因其性能稳定、价格低廉、资源丰富,常被用于各种电子设计项目中,尤其是教育和初级研发领域。本文将深入探讨一个基于51单片机的烟雾报警器设计,该项目不仅包含了完整的工程...

    Java面试考核目标.docx

    - 初级:对学习新事物持开放态度。 - 中级:经常参加技术交流活动,拓宽视野。 - 高级:主动订阅技术博客或论坛,持续追踪前沿动态。 - 资深/专家:具备创新精神,敢于尝试前人未涉足的领域。 3. **学习方法** ...

    SphereSample - MetaTrader 5脚本.zip

    通过学习和理解这个脚本,交易者不仅可以提升自己的编程技能,还能发掘更多创新的交易分析方法。同时,它也强调了头文件在组织和维护代码结构中的重要作用。无论是对于初级编程者还是经验丰富的交易者, ...

    STITP.rar_stitp

    这个项目被描述为“初级入门”,意味着它可能适合初学者学习和实践基础的传感器技术和嵌入式系统开发。 标签“stitp”进一步确认了项目与特定的创新实践计划相关,可能包含特定的指导原则、项目要求或学习目标。 ...

    PFE2 - MetaTrader 5脚本.zip

    同时,通过查看源代码(mq5文件),我们可以学习到如何在MQL5中实现特定的平滑算法,以及如何将计算结果绘制成彩色柱状图。这对于提升自己的MT5编程技能和交易策略设计能力非常有帮助。 总的来说,"PFE2 - ...

    MQviewer

    总之,MQViewer是R语言环境中对消息队列进行管理和分析的强大工具,无论你是初级开发者还是经验丰富的数据科学家,都能从中受益。通过深入学习和熟练掌握MQViewer,你将能够更有效地管理和优化你的消息队列系统,...

    455.基于51单片机的空气检测(仿真).rar

    它以其简单易用、功能强大和成本低廉的特点,在电子工程领域广泛应用,尤其在教育和初级项目中是首选。51单片机具有8位CPU,内置RAM、ROM以及I/O端口,能够处理基本的数字信号处理和控制任务。 【空气检测系统】 ...

    废气检测装置

    【废气检测装置】是一种基于51单片机的简易设备,设计目的是为了帮助硬件初学者进行实践操作或参与初级电子竞赛。51单片机是微控制器领域中的基础型号,因其内部集成的8位CPU、RAM、ROM以及一系列外围接口而广泛应用...

    Hi/lo mod - MetaTrader 5脚本.zip

    《MetaTrader 5脚本——Hi/lo mod...无论是对于初级还是经验丰富的交易者,理解和运用这类脚本都是提升交易技能的重要途径。通过不断学习和实践,交易者可以充分利用MT5的开放性,打造出符合个人交易理念的专属工具。

    【程序员简历模板】资源

    2. 熟练掌握Spring、SpringMVC、Mybatis等开源软件,以及分布式系统开发相关的Redis、Mq、Dubbo、Zk。 3. 精通Java并发编程,有分布式系统开发经验,熟悉Nginx、Tomcat等中间件,且熟练使用Linux操作系统。 4. 熟悉...

    自定义看跌动力输入 - MetaTrader 5脚本.zip

    此外,对于希望深入学习MQL5编程的用户来说,这个脚本也是一个很好的学习案例,可以了解如何添加和修改指标的输入参数,以满足特定需求。 总结来说,“自定义看跌动力输入”脚本是MT5平台上的一个创新工具,它扩展...

    多头挂单 - MetaTrader 5脚本.zip

    对于初级交易者,这提供了一个学习自动化交易和策略实施的实例;而对于经验丰富的交易者,这可能是一个定制自己交易规则的好工具。 总的来说,这个"多头挂单"脚本是MetaTrader 5平台的一个实用工具,结合了交易策略...

    IncOsMAOnArray - MetaTrader 5程序库.zip

    《MetaTrader 5程序库:IncOsMAOnArray深度解析》 在金融交易领域,MetaTrader 5(MT5)是...通过学习和应用这个程序库,无论是初级交易者还是经验丰富的专业交易者,都能在市场分析和交易策略制定上迈出坚实的一步。

Global site tag (gtag.js) - Google Analytics