2019独角兽企业重金招聘Python工程师标准>>>

下载地址:官方下载地址

下载完成后解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序。

wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    |
jvm 1    | Java Runtime: Oracle Corporation 1.7.0_51 C:\Program Files\Java\jdk1.7.0_51\jre
jvm 1    |   Heap sizes: current=61440k  free=56514k  max=932352k
jvm 1    |     JVM args: -Dactivemq.home=../.. -Dactivemq.base=../.. -Djavax.net.ssl.keyStorePassword=password -Djavax.net.ssl.trustStorePassword=password -Djavax.net.ssl.keyStore=../../conf/broker.ks-Djavax.net.ssl.trustStore=../../conf/broker.ts -Dcom.sun.management.jmxremote -Dorg.apache.activemq.UseDedicatedTaskRunner=true -Djava.util.logging.config.file=logging.properties -Dactivemq.conf=../
../conf -Dactivemq.data=../../data -Djava.security.auth.login.config=../../conf/login.config -Xmx1024m -Djava.library.path=../../bin/win64 -Dwrapper.key=nHS3sBcSd6ZaDpiu -Dwrapper.port=32000 -Dwrapper
.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=8028 -Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1
jvm 1    | Extensions classpath:
jvm 1    |   [..\..\lib,..\..\lib\camel,..\..\lib\optional,..\..\lib\web,..\..\lib\extra]
jvm 1    | ACTIVEMQ_HOME: ..\..
jvm 1    | ACTIVEMQ_BASE: ..\..
jvm 1    | ACTIVEMQ_CONF: ..\..\conf
jvm 1    | ACTIVEMQ_DATA: ..\..\data
jvm 1    | Loading message broker from: xbean:activemq.xml
jvm 1    |  INFO | Refreshing org.apache.activemq.xbean.XBeanBrokerFactory$1@21f4075c: startup date [Mon Aug 24 14:09:22 CST 2015]; root of context hierarchy
jvm 1    |  INFO | PListStore:[E:\apache-activemq-5.12.0\bin\win64\..\..\data\localhost\tmp_storage] started
jvm 1    |  INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[E:\apache-activemq-5.12.0\bin\win64\..\..\data\kahadb]
jvm 1    |  INFO | Apache ActiveMQ 5.12.0 (localhost, ID:shy-PC-64231-1440396565339-0:1) is starting
jvm 1    |  INFO | Listening for connections at: tcp://shy-PC:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1    |  INFO | Connector openwire started
jvm 1    |  INFO | Listening for connections at: amqp://shy-PC:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1    |  INFO | Connector amqp started
jvm 1    |  INFO | Listening for connections at: stomp://shy-PC:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1    |  INFO | Connector stomp started
jvm 1    |  INFO | Listening for connections at: mqtt://shy-PC:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1    |  INFO | Connector mqtt started
jvm 1    | {}
jvm 1    |  INFO | Listening for connections at ws://shy-PC:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1    |  INFO | Connector ws started
jvm 1    |  INFO | Apache ActiveMQ 5.12.0 (localhost, ID:shy-PC-64231-1440396565339-0:1) started
jvm 1    |  INFO | For help or more information please see: http://activemq.apache.org
jvm 1    |  INFO | ActiveMQ WebConsole available at http://0.0.0.0:8161/
jvm 1    |  INFO | ActiveMQ Jolokia REST API available at http://0.0.0.0:8161/api/jolokia/
jvm 1    |  INFO | Initializing Spring FrameworkServlet 'dispatcher'
jvm 1    |  INFO | jolokia-agent: No access restrictor found at classpath:/jolokia-access.xml, access to all MBeans is allowed

用户配置文件在apache-activemq-5.12.0\conf\users.properties,默认用户密码为admin/admin

启动ActiveMQ以后,登陆:http://localhost:8161/admin/

打开eclipse,创建两个项目(producer、customer),将apache-activemq-5.5.1\lib下的jar拷贝到项目里并buildpath。分别在两个项目里对应建立如下类:

producer类(producer项目)

package producer;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 Producer {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的实现jarconnectionFactory = 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);}}
}

customer类(customer项目)

package customer;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 Customer {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) {//设置接收者接收消息的时间,为了便于测试,这里谁定为100sTextMessage 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) {}}}
}

然后运行producer项目,以下为控制台输出:

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

在刚刚打开的页面里找到queues,点击可以看到我们刚刚创建的queues

注:有时候并不明白队列到底是被用来做什么?或者说它可以做什么?什么情况下需要做?举几个简单的例子,或许不合适,但应该能够明白:

1、日志。当多个类实例同时产生日志的时候,因为日志文件只有一个,每次写入都只能有一个类实例能够写入,其他全部阻塞。这样显然是消耗性能的,那么如果这个时候有个中间件,类实例只需要把要写的日志传入中间件,就执行结束,然后另外一个程序不断从中间件获取日志再去写入日志,那么这样能够提升很大的性能。

2、分布式事物。我们知道分布式项目的事物是很麻烦的,加入我们购买了一个商品,那么就需要同时去更改很多东西,比如客户信息、订单信息、发货信息等,在dao或service里一个一个去连接再写入,会导致页面长时间无反应,用户体验度非常差,而如果把这些要添加的数据写到一个中间件,其他专门的程序去读取处理,这样页面就不会出现长时间等待问题。

另外注意,TextMessage类的setObjectProperty只能传递原始类型、字符、map、list,其他类型会报错。

与spring集成点击此:http://my.oschina.net/shyloveliyi/blog/496489

转载于:https://my.oschina.net/shyloveliyi/blog/496288

ActiveMQ消息队列相关推荐

  1. SpringBoot集成ActiveMq消息队列实现即时和延迟处理

    原文链接:https://blog.csdn.net/My_harbor/article/details/81328727 一.安装ActiveMq 具体安装步骤:自己谷歌去 二.新建springbo ...

  2. ActiveMQ消息队列的使用及应用

    目录:  一:JMQ的两种消息模式1.1:点对点的消息模式1.2:订阅模式 二:点对点的实现代码2.1:点对点的发送端2.2:点对点的接收端 三:订阅/发布模式的实现代码3.1:订阅模式的发送端3.2 ...

  3. ActiveMQ消息队列安装和使用

    ActiveMQ ActiveMQ介绍 什么是ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规 ...

  4. SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNOWLEDGE)为什么失效啊?

    今天在家隔离办公,不太忙,然后就琢磨起来消息队列activeMQ的消息事务来解决分布式事务,但是奈何在SpringBoot整合activeMQ时,其消费者手动签收消息时出现了问题-->当acti ...

  5. activeMQ消息队列(xml方式)

    一.项目搭建(spring+activeMQ环境) 导包: <!-- 消息队列 MQ --><dependency><groupId>org.apache.acti ...

  6. 消息队列篇—详谈ActiveMQ消息队列模式的分析及使用

    2019独角兽企业重金招聘Python工程师标准>>> 消息队列(Message Queue)是分布式系统中重要的组件,通用使用场景可以简单地描述为当不需要立即获得结果,但是并发量需 ...

  7. 关于ActiveMQ消息队列不消费的思考

    对于某些消息队列中间件标榜自己吞吐量高一直无法理解,一直觉得,不同的消息队列实现,吞吐量不会差太多,不管是多是少总不会差一个量级上,,一丁点差距没有值得称道的地方. 直到我用了ActiveMQ,才终于 ...

  8. activemq nodejs stomp 重连机制_5分钟优劣分析 Kafka、RabbitMQ、RocketMQ、ActiveMQ消息队列...

    一.资料文档 Kafka:中,有kafka作者自己写的书,网上资料也有一些. rabbitmq:有一些不错的书,网上资料多. zeromq:少.没有专门写zeromq的书,网上的资料多是一些代码的实现 ...

  9. ActiveMQ消息队列用法

    pom.xml文件如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// ...

  10. ActiveMQ消息队列介绍(转)

    ActiveMQ是一个开源兼容Java Message Service (JMS) 1.1面向消息的中件间. 来自Apache Software Foundation. ActiveMQ提供松耦合的应 ...

最新文章

  1. Oracle EBS R12.1.1 应用克隆 - 3
  2. 学习笔记(10):Python网络编程并发编程-粘包现象
  3. Hard Disk Drive HDU - 4788
  4. 造轮子是什么意思_程序员为什么热衷于造轮子,升职加薪吗?
  5. win10 安装flutter记录
  6. 31. HTTP 与 HTTPS 区别
  7. python笔记26-命令行传参sys.argv实际运用
  8. DevComponents.AdvTree 相关笔记
  9. Android仿IOS屏幕亮度调节-自定义view系列(5)
  10. 10种优化Mac以获得最佳性能的简便方法
  11. 一种电池过放电保护电路
  12. 来电弹屏--线程间操作无效: 从不是创建控件的线程访问它
  13. android 实现果冻动画效果,HTML5/Canvas粘滑的果冻动画特效
  14. 国外最好用的WordPress主机推荐
  15. 如何从一个XtraBackup完整备份中恢复一个InnoDB表
  16. [SpringCould篇]之服务消费方式Ribbon+RestTemplate
  17. java:编写一个求平方的窗体
  18. Glide之GlideModule
  19. 强制重启Linux系统的几种方法
  20. iphone免越狱插件_如何保护iPhone免受盗贼的侵害

热门文章

  1. 例4.4 最大公约数 - 九度教程第47题(最大公约数GCD)
  2. python用matplotlib画皮卡丘_python使用matplotlib绘图 -- barChart
  3. linux比较两个文件的内容,[Linux] 使用awk比较两个文件的内容
  4. spss无法连接到本地计算机,通过远程连接打开SPSS产品时,收到许可证错误信息。从本地打开同一产品时没有错误。...
  5. matlab 发动机万有特性,用MATLAB语言绘制发动机万有特性的两种方法
  6. Barh函数--Matplotlib
  7. IT兄弟连 JavaWeb教程 JSP定义
  8. PostgreSQL 与 PostGIS
  9. week03_python标准库datetime
  10. 技术 | Python从零开始系列连载(二十三)