1、下载安装ActiveMQ

下载可以去官网下载:http://activemq.apache.org/download.html。我们这里使用windows测试,所以下载windows版本即可。

2、启动ActiveMQ 

下载zip文件后直接解压,解压后我们比较关注的是bin和conf目录。

  • bin存放的是脚本文件
  • conf存放的是基本配置文件
  • data存放的是日志文件
  • docs存放的是说明文档
  • examples存放的是简单的实例
  • lib存放的是activemq所需jar包
  • webapps用于存放项目的目录

启动ActiveMQ非常的简单。进入bin目录
双击“activemq.bat”就启动运行了。因为ActiveMQ是用Java编写的,所以必须确保电脑已经安装了JDK。

双击运行之后就可以在浏览器里面输入:http://localhost:8161/admin。就能够进入ActiveMQ的后台页面了。帐号密码默认都是:admin
Java程序连接端口:61616

修改61616端口,可以修改文件conf>activemq.xml
修改登录名和密码,可以修改文件conf>jetty-realm.properties

3、创建一个ActiveMQ工程

这里还是先放一张图:

根据这张图我们实现了一个队列Queue的代码如下

1.pom.xml

<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
</dependency>

2.消费者代码

package cn.duanjt;

import java.io.IOException;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.ActiveMQSession; /**
* 消费者
* @author 段江涛
* @date 2018-11-23
*/
public class Consumer {
// 全部使用缺省值
private static String USERNAME = ActiveMQConnection.DEFAULT_USER;
private static String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
private static String BROKER = ActiveMQConnection.DEFAULT_BROKER_URL; public static void main(String[] args) throws IOException {
ConnectionFactory factory;
Connection connection = null;
Session session;
Queue queue;
Message message;
MessageConsumer consumer; try {
factory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER);
connection = factory.createConnection();
connection.start(); session = connection.createSession(false, ActiveMQSession.AUTO_ACKNOWLEDGE);
queue = session.createQueue("zd-duanjt");
consumer = session.createConsumer(queue);
//注释部分为同步方式
/*while (true) {
message = consumer.receive();
TextMessage tmsg = (TextMessage) message;
System.out.println("接收到数据:" + tmsg.getText());
}*/
//下面是异步方式,通过注册监听
consumer.setMessageListener(new MessageListener() { @Override
public void onMessage(Message message) {
TextMessage tmsg = (TextMessage) message;
try {
System.out.println("接收到数据:" + tmsg.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}); } catch (Exception e) {
e.printStackTrace();
} finally{
// 之前在这里把连接关闭了,导致一直无法消费数据,注意,这里千万不要关闭连接
}
}
}

3.生产者代码

package cn.duanjt;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session; import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.ActiveMQSession; /**
* 生产者产生数据
* @author 段江涛
* @date 2018-11-23
*/
public class Productor {
// 全部使用缺省值
private static String USERNAME = ActiveMQConnection.DEFAULT_USER;
private static String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
private static String BROKER = ActiveMQConnection.DEFAULT_BROKER_URL; public static void main(String[] args) throws JMSException {
ConnectionFactory factory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER);
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, ActiveMQSession.AUTO_ACKNOWLEDGE); Queue queue = session.createQueue("zd-duanjt");
MessageProducer productor = session.createProducer(queue);
for (int i = 0; i < 3; i++) {
String msg = "Hello world:" + i;
Message message = session.createTextMessage(msg);
productor.send(message);
System.out.println("发送数据:" + msg);
} connection.close(); }
}

重点说明:

1.Queue queue = session.createQueue("zd-duanjt");表示创建一个队列,我们也可以创建一个Topic,Topic topic=session.createTopic("zd-topic");

2.注意这里面的JMS相关的类都在包javax.jms.*下

Java访问ActiveMQ的更多相关文章

  1. java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况

    java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况 邮件短信微服务 spring boot 微服务 接收json格式参数 验证参数合 ...

  2. java访问修饰符

    了解面向对象思想的同学们,都知道"封装"这一基本特征,如何正确运用访问修饰符,恰恰能体现出封装的好坏. java访问修饰符有四个: 1)public:访问权限最高,其修饰的类.类变 ...

  3. [THINKING IN JAVA]访问权限控制

    6 访问权限控制 6.1 包:库单元 package.import.import *.import static: 修改classpath环境变量可以将自己写的类库添加至环境变量并在任何java程序中 ...

  4. java 访问 usb

    java 要访问 usb 设备,通常要自己写c/c++代码,然后再用 java 访问这些组件,以达到控制usb设备的目的.但现在有一个开源组件 libusb 帮我们做好了访问usb设备的封装(包括wi ...

  5. Java访问USB设备

    最近在用Java访问RDing设备,使用的是Java HID API.使用过程中发现一个问题,由于是嵌入式小白,不知道如何向USB设备发送report.于是想到可以看看自带的软件如何访问USB的.找到 ...

  6. java访问权限的问题

    java访问权限的问题 java 访问权限 修饰符 背景: 关于java中的四种访问修饰符,public ,default ,protected ,private的作用范围本以为很熟悉了,但碰到了这样 ...

  7. Hadoop(五)搭建Hadoop与Java访问HDFS集群

    前言 上一篇详细介绍了HDFS集群,还有操作HDFS集群的一些命令,常用的命令: hdfs dfs -ls xxx hdfs dfs -mkdir -p /xxx/xxx hdfs dfs -cat ...

  8. java访问权限修饰符

    作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × ja ...

  9. MinerQueue.java 访问队列

    MinerQueue.java 访问队列 package com.iteye.injavawetrust.miner; import java.util.HashSet; import java.ut ...

随机推荐

  1. Huffman Implementation with Python

    Huffman Implementation with Python 码表 Token Frequency a 10 e 15 i 12 s 3 t 4 space 13 n 1 生成 Huffman ...

  2. 牛客网数据库SQL实战(21-25)

    21.查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序CREATE TABLE `employees` (`emp_no` i ...

  3. 数据库 --- 4 多表查询 ,Navicat工具 , pymysql模块

    一.多表查询 1.笛卡儿积 查询 2.连接 语法: ①inner    显示可构成连接的数据 mysql> select employee.id,employee.name,department ...

  4. topcoder srm 689 div1 -3

    1.给出一个$2*n$的矩阵,只包含小写字母.重新排列各个元素使得任意两个相邻的元素不相同? 思路:按照每种字符的数量降序排序,然后从多到少依次放每一种.放的时候一上一下交错放置. #include ...

  5. 小白学习 Redis 数据库日记(2017-06-13)

    redis 127.0.0.1:6379> LPUSH runoobkey redis(integer) 1redis 127.0.0.1:6379> LPUSH runoobkey mo ...

  6. 【命令】MongoDB常用命令记录

    如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection('user')),这样就可以创建一个名叫“myTest”的数据库 ...

  7. 18 Issues in Current Deep Reinforcement Learning from ZhiHu

    深度强化学习的18个关键问题 from: https://zhuanlan.zhihu.com/p/32153603 85 人赞了该文章 深度强化学习的问题在哪里?未来怎么走?哪些方面可以突破? 这两 ...

  8. [bug] - 关于poi导入excel时间格式会减少8小时的问题.

    这个bug发生在使用poi组件导入导出excel时,(这里是导入) 首先在excel中的格式设定是 yyyy-mm-dd hh:mm:ss 通过配套使用ExcelUtil中 getCellValue( ...

  9. [bootstrapValidator] - bootstrap的验证工具

    翻了下之前和同事做的一个验证 <!--bootstrapValidator--> <script type="text/javascript" th:inline ...

  10. Bytomd 助记词恢复密钥体验指南

    比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 背景知识 ...