这里通过一个入门的案例来体会一下ActiveMQ的作用以及使用方法。你要做一个不动声色的大人了。不准情绪化,不准偷偷想念,不准回头看。去过自己另外的生活。你要听话,不是所有的鱼都会生活在同一片海里。

ActiveMQ的案例

一、window上的ActiveMQ下载及安装

下载地址: http://activemq.apache.org/download.html

下载的zip包,解压就可以直接使用。进入D:\Apache\apache-activemq\apache-activemq-5.15.0\bin\win64。运行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.8.0_152 D:\Java\jdk\jre1.8
jvm 1 | Heap sizes: current=188416k free=175635k 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=yyWSlZPI4Cs9bJP5 -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=16960 -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@715c57f8: startup date [Fri Nov 03 15:13:52 CST 2017]; root of context hierarchy
jvm 1 | INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[D:\Apache\apache-activemq\apache-activemq-5.15.0\bin\win64\..\..\data\kahadb]
jvm 1 | INFO | KahaDB is version 6
jvm 1 | INFO | Recovering from the journal @1:45959
jvm 1 | INFO | Recovery replayed 1030 operations from the journal in 0.063 seconds.
jvm 1 | INFO | PListStore:[D:\Apache\apache-activemq\apache-activemq-5.15.0\bin\win64\..\..\data\localhost\tmp_storage] started
jvm 1 | INFO | Apache ActiveMQ 5.15.0 (localhost, ID:Linux-61868-1509693233765-0:1) is starting
jvm 1 | INFO | Listening for connections at: tcp://Linux:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1 | INFO | Connector openwire started
jvm 1 | INFO | Listening for connections at: amqp://Linux:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1 | INFO | Connector amqp started
jvm 1 | INFO | Listening for connections at: stomp://Linux:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1 | INFO | Connector stomp started
jvm 1 | INFO | Listening for connections at: mqtt://Linux:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1 | INFO | Connector mqtt started
jvm 1 | WARN | ServletContext@o.e.j.s.ServletContextHandler@3f6545d8{/,null,STARTING} has uncovered http methods for path: /
jvm 1 | INFO | Listening for connections at ws://Linux:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1 | INFO | Connector ws started
jvm 1 | INFO | Apache ActiveMQ 5.15.0 (localhost, ID:Linux-61868-1509693233765-0:1) started
jvm 1 | INFO | For help or more information please see: http://activemq.apache.org
jvm 1 | WARN | Store limit is 102400 mb (current store usage is 0 mb). The data directory: D:\Apache\apache-activemq\apache-activemq-5.15.0\bin\win64\..\..\data\kahadb only has 43466 mb of usable space. - resetting to maximum available disk space: 43466 mb
jvm 1 | WARN | Temporary Store limit is 51200 mb (current store usage is 0 mb). The data directory: D:\Apache\apache-activemq\apache-activemq-5.15.0\bin\win64\..\..\data only has 43465 mb of usable space. - resetting to maximum available disk space: 43465 mb
jvm 1 | INFO | No Spring WebApplicationInitializer types detected on classpath
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 | No Spring WebApplicationInitializer types detected on classpath
jvm 1 | INFO | jolokia-agent: Using policy access restrictor classpath:/jolokia-access.xml

activeMQ的启动

在浏览器输入http://127.0.0.1:8161/admin/,用户名和密码为admin。即可看到activeMQ的管理页面。

二、我们通过一个实例来感受它的使用

在这里不会过多的介绍ActiveMQ的一些知识,我们以基于JMS的点对点队列,实现异步队列发送信息为案例。项目的maven依赖

<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>${activemq-version}</version>
</dependency>
  • 定义一个消息的生产者
package com.linux.huhx.firstdemo;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
* @Author: huhx
* @Date: 2017-11-03 上午 11:38
*/
public class HuhxProducer {
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
Connection connection = connectionFactory.createConnection();
connection.start(); Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // 会话
Destination destination = session.createQueue("HuhxSend"); // 队列 /* 生产者 */
MessageProducer messageProducer = session.createProducer(destination);
messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); /* 发送消息 */
MailMessage mailMessage = new MailMessage("huhx", "linux", "Welcome to ActiveMQ!");
ObjectMessage message = session.createObjectMessage(mailMessage);
messageProducer.send(message);
session.commit();
System.out.println("senting...");
}
}
  • 定义一个消息的消费者
package com.linux.huhx.firstdemo;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.util.concurrent.TimeUnit; /**
* @Author: huhx
* @Date: 2017-11-03 上午 11:24
*/
public class HuhxConsumer {
public static void main(String[] args) throws JMSException, InterruptedException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
// JMS clients use the ConnectionFactory object to create connections to a JMS provider.
Connection connection = connectionFactory.createConnection();
connection.start(); Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // 会话
Destination destination = session.createQueue("HuhxSend"); // 队列 MessageConsumer consumer = session.createConsumer(destination);
while (true) {
ObjectMessage message = (ObjectMessage) consumer.receive();
if (message != null) {
MailMessage mailMessage = (MailMessage) message.getObject();
System.out.println("send message " + mailMessage);
TimeUnit.SECONDS.sleep(2);
System.out.println("End");
}
}
}
}
  • 一个消息的实体类,需要实现Serializable类
package com.linux.huhx.firstdemo;

import java.io.Serializable;

/**
* @Author: huhx
* @Date: 2017-11-03 上午 11:41
*/
public class MailMessage implements Serializable {
private String userForm;
private String message;
private String userTo; public MailMessage(String userForm, String message, String userTo) {
this.userForm = userForm;
this.message = message;
this.userTo = userTo;
} public String getUserForm() {
return userForm;
} public String getMessage() {
return message;
} public String getUserTo() {
return userTo;
} @Override
public String toString() {
return "from " + userForm + ", to " + userTo + ", message " + message;
}
}

三、运行测试的结果

运行main方法(HuhxConsumer --> HuhxProducer),在HuhxConsumer的控制台打印:

send message from huhx, to Welcome to ActiveMQ!, message linux
End

我们在activeMQ的管理平台中,也可以看到如下:

当然在这个平台上,我们也可以手动的产生并发送信息。

友情链接

activeMQ---->ActiveMQ的使用(一)的更多相关文章

  1. ActiveMQ——activemq的安装详情,修改密码

    1.安装 下载 http://activemq.apache.org/download-archives.html, [推荐]ActiveMQ 5.13.4 Release与jdk1.7搭配(其它版本 ...

  2. Springboot+ActiveMQ(ActiveMQ消息持久化,保证JMS的可靠性,消费者幂等性)

    ActiveMQ 持久化设置: 在redis中提供了两种持久化机制:RDB和AOF 两种持久化方式,避免redis宕机以后,能数据恢复,所以持久化的功能 对高可用程序来说 很重要. 同样在Active ...

  3. ActiveMQ——activemq的报错见解javax.jms.JMSException: Software caused connection abort: recv failed

    activeMQ出现javax.jms.JMSException: Software caused connection abort: recv failed的问题解决 一直找不到原因,原来是在本地的 ...

  4. ActiveMQ——activemq的使用java代码实例(精选)

    ActiveMQ 在java中的使用,通过单例模式.工厂实现 Jms规范里的两种message传输方式Topic和Queue,两者的对比如下表():   Topic Queue 概要 Publish  ...

  5. ActiveMQ——activemq的详细说明,queue、topic的区别(精选)

    JMS中定义了两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic).主要区别就是是否能重复消费. 点对点:Queue,不可重 ...

  6. [ActiveMQ]初识ActiveMQ

    初识ActiveMQ ActiveMQ介绍 官方网站:http://activemq.apache.org/ 最新版本:ActiveMQ 5.14.1(2016-10-28) 最新版本下载链接:htt ...

  7. C++ activemq CMS 学习笔记.

    很早前就仓促的接触过activemq,但当时太赶时间.后面发现activemq 需要了解的东西实在是太多了. 关于activemq 一直想起一遍文章.但也一直缺少自己的见解.或许是网上这些文章太多了. ...

  8. Activemq Jolokia

    打开JMX <broker … useJmx="true"> … <managementContext> <managementContext cre ...

  9. ActiveMQ;RabbitMQ;ZeroMQ

    中间件类型: Embedded middleware: As the name suggests, this typeof middleware handles embedded applicatio ...

  10. Activemq 平台搭建与C#示列

    ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS ...

随机推荐

  1. Docker for Mac 安装及Mysql安装使用

    启动 mysql 镜像 docker run -d -p 127.0.0.1:3306:3306 –name mysql -v /Users/flyrPc/docker/mysql/data:/var ...

  2. css3 -- 自动生成序号(不使用JS,可任意排序)

    需求:一个table 需要在第一列生成序号:1.2.3.4.5......  并且自适应行数 不使用后台程序,开始考虑使用JS,但是一旦前台排序后,序号就乱了,最后采用CSS的一个计数器方法实现! & ...

  3. 核心动画——Core Animation

    一. CALayer (一). CALayer简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比方一个button.一个文本标签.一个文本输入框.一个图标等等.这些都是UIView ...

  4. 升级win10,提示(RAM)内存不足2G的解决的方法,亲測可行

    前两天升级win10,检測我内存不足2G,可我的电脑是8G的内存如图 百度,google了非常多方法,有些是两根内存,去掉一个就好了,但是我的就一根8G的,其它就没什么好的方法了,改biosCPU选项 ...

  5. org.in2bits.MyXls.XlsDocument 生成excel文件 ; 如果想读取模板再另外生成的话,试试 NPOI

    优点:不依赖Microsoft组件,在内存中操作excel,读写速度快.   缺点:无法读取模板,只能生成新的excel (我亲自测试是在读取完模板后,不能保存,也不能另存,并且其他人说这个读取还会有 ...

  6. perl 安装Image::Magick 模块

    ImageMagick 是一个处理图片的库,有C, perl, python, java 等多种语言对应的库 在安装perl 对应的Image::Magick 模块之前,首先需要安装 ImgeMagi ...

  7. java-信息安全(三)-PBE加密算法

    概述 信息安全基本概念: PBE算法(Password Based Encryption,基于口令加密) PBE PBE算法(Password Based Encryption,基于口令加密)是一种基 ...

  8. 利用Android NDK编译lapack

    最近有这方面的需要,但是在网上查了一下,几乎没有讲这个的.后来发现了外国某个大牛在github上的project.拉下来自己编译了一下竟然通过了,记录如下: 1.从https://github.com ...

  9. Run ASP.NET MVC site on mac (mono/xamarin studio)

    我们选择用xamarin studio来测试,如果你直接进xamarin的官网,那么会有一个更好看的网站和更复杂的流程(比如需要注册),我们直接到mono项目找mac的支持吧,点此进入 相关sdk和a ...

  10. 用iostat对linux硬盘IO性能进行检测

    近期公司安装了几台DELL PE2650和2850的服务器,统一安装的是RHLE5.132位系统,而服务器的SCSI硬盘都统一做了raid1.公司老总要求对硬盘IO作统一检测报告,在Linux下找了许 ...