消息队列的作用

为什么使用ActiveMQ,不使用其他工具

下载安装包并启动

http://localhost:8161/admin/ (账号:admin:admin)

Java实现步骤:

// 1.创建连接工厂对象(ConnectionFactory)
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(URL);
// 2.创建连接对象(Connection)
Connection connection = connectionFactory.createConnection();
// 3.启动连接
connection.start();
// 4.创建session会话,第一参数表示启用事务处理,第二个参数表示启动哪种应答模式,这里启用的是自动应答
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5.创建目的地(queue/topic)
Queue queue = session.createQueue(QUEUE_NAME);
// 6.创建生产者/消费者
MessageProducer producer = session.createProducer(queue);
// 7.生产/消费消息
producer.send(message);

生产者代码:

public class MQProducer {
private static final String URL = "tcp://localhost:61616";
private static final String QUEUE_NAME = "queue-test";
private static final String TOPIC_NAME = "topic-test"; public static void main(String[] args) throws JMSException {
ConnectionFactory ConnectionFactory = new ActiveMQConnectionFactory(URL);
Connection connection = ConnectionFactory.createConnection();
connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue destination = session.createQueue(QUEUE_NAME);
// Topic destination = session.createTopic(TOPIC_NAME); // Topic消息
MessageProducer producer = session.createProducer(destination);
for(int i = 0; i < 10; i++) {
TextMessage message = session.createTextMessage("Message" + i);
producer.send(message);
System.out.println("Sent message" + i);
} producer.close();
session.close();
connection.close();
}
}

消费者代码:

public class MQConsumer {
private static final String URL = "tcp://localhost:61616";
private static final String QUEUE_NAME = "queue-test";
private static final String TOPIC_NAME = "topic-test"; public static void main(String[] args) throws JMSException, InterruptedException { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(URL);
Connection connection = connectionFactory.createConnection(); // 消费者1 : Queue & Topic Consumer
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue destination = session.createQueue(QUEUE_NAME); // Topic destination = session.createTopic(TOPIC_NAME);
MessageConsumer consumer = session.createConsumer(destination); // 消费者2 : Topic Subscriber
// connection.setClientID("client-test");
// connection.start();
// Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Topic destination = session.createTopic(TOPIC_NAME);
// TopicSubscriber consumer = session.createDurableSubscriber(destination, "subscription-test"); // 接收消息1 : MessageListener异步接收消息
consumer.setMessageListener(new MessageListener(){
@Override
public void onMessage(Message message) {
try {
System.out.println("Received " + ((TextMessage) message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
Thread.sleep(10000); // 主线程等待一段时间后结束 // 接收消息2 : receive同步阻塞等待消息
// for(int i = 0; i < 10; i++) {
// TextMessage message = (TextMessage) consumer.receive();
// System.out.println("Received " + message.getText());
// } consumer.close();
session.close();
connection.close();
}
}

Producer consumer receive messageListener

topic

queue

JMS

消息可靠性之持久化  JDBC

topic持久化

事务

签收

点对点发布订阅

spring整合activemq

zookeeper+replicated levelDB

异步投递

延迟投递

定时投递

重试机制

死信队列

防止重复调用

ActiveMQ基础的更多相关文章

  1. ActiveMQ基础教程----简单介绍与基础使用

    概述 ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多 ...

  2. ActiveMQ基础使用

    概述 ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多 ...

  3. ActiveMQ基础教程(四):.net core集成使用ActiveMQ消息队列

    接上一篇:ActiveMQ基础教程(三):C#连接使用ActiveMQ消息队列 这里继续说下.net core集成使用ActiveMQ.因为代码比较多,所以放到gitee上:https://gitee ...

  4. ActiveMQ基础教程(三):C#连接使用ActiveMQ消息队列

    接上一篇:ActiveMQ基础教程(二):安装与配置(单机与集群) 安装部署好集群环境:192.168.209.133:61616,192.168.209.134:61616,192.168.209. ...

  5. 成小胖学习ActiveMQ·基础篇

    过了个春节,回到公司的成小胖变成了成大胖.但是你们千万别以为他那个大肚子里面装的都是肥肉,里面的墨水也多了不少嘞,毕竟成小胖利用春节的半个月时间专心学习并研究了 ActiveMQ,嘿嘿……这不,为了检 ...

  6. ActiveMQ基础教程(二):安装与配置(单机与集群)

    因为本文会用到集群介绍,因此准备了三台虚拟机(当然读者也可以使用一个虚拟机,然后使用不同的端口来模拟实现伪集群): 192.168.209.133 test1 192.168.209.134 test ...

  7. ActiveMQ基础教程(一):认识ActiveMQ

    ActiveMQ是Apache软件基金会所研发开源的消息中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信. 现在的消息队列有不少,RabbitMQ.Kafka.RocketMQ,Z ...

  8. ActiveMQ基础简介

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

  9. ActiveMQ基础01——Linux下载安装ActiveMQ

    1.下载 下载地址:http://activemq.apache.org/ 点击按钮 下载Linux下最新版安装包,点击即可下载 2.安装ActiveMQ 将之前下载的安装包上传到linux当中,一般 ...

随机推荐

  1. 【剑指offer】和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...

  2. 法那科 三菱 CNC虚拟机

    有虚拟机,就不用去线上 接线调机了,影响生产,还怕搞坏机子,很方便.

  3. sublime配置python环境及快捷键

    sublime配置python环境 参考链接:https://blog.csdn.net/VertigozZ/article/details/54574006 快捷键的配置:https://www.c ...

  4. golang --- time包常用函数以及基础的类型转换

    1.[]byte转为string: package main import ( "fmt" ) func main() { data := [4]byte{0x31, 0x32, ...

  5. java中常见关键字的介绍

    Java中类,属性,方法修饰符 public 公共访问权限,不但在本应用中可以放问,其他应用也可以访问.接口中的方法默认都是public的 protected 被protected修改的:可以被本类, ...

  6. vim打开多个文件、同时显示多个文件、在文件之间切换

    打开多个文件: 1.vim还没有启动的时候: 在终端里输入  vim file1 file2 ... filen便可以打开所有想要打开的文件 2.vim已经启动 输入 :open file 可以再打开 ...

  7. 04、MySQL—数据基础操作

    1.插入操作 本质含义:将数据以SQL的形式存储到指定的数据表(字段)里面 基本语法:向表中指定字段插入数据 Insert into 表名[(字段列表)] values(对应字段列表) 范例:向表中插 ...

  8. aria2 https

    https://github.com/aria2/aria2/issues/361 ... and also make sure that aria2 was built with HTTPS sup ...

  9. IDEA插件:search with bing、search with baidu

    //转载请注明出处:https://www.cnblogs.com/nreg/p/11267169.html 当项目出现错误时,经常需要复制错误信息粘贴到浏览器查询,但是手动复制再粘贴太麻烦了, 因此 ...

  10. Nginx 常用命令并实现最基本的反向代理

    nginx 命令 测试配置文件格式是否正确:$ nginx -t 启动:nginx 重启:nginx -s reload 获取nginx进程号: ps -ef|grep nginx 停止进程(mast ...