ActiveMQ基础
消息队列的作用
为什么使用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基础的更多相关文章
- ActiveMQ基础教程----简单介绍与基础使用
		概述 ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多 ... 
- ActiveMQ基础使用
		概述 ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多 ... 
- ActiveMQ基础教程(四):.net core集成使用ActiveMQ消息队列
		接上一篇:ActiveMQ基础教程(三):C#连接使用ActiveMQ消息队列 这里继续说下.net core集成使用ActiveMQ.因为代码比较多,所以放到gitee上:https://gitee ... 
- ActiveMQ基础教程(三):C#连接使用ActiveMQ消息队列
		接上一篇:ActiveMQ基础教程(二):安装与配置(单机与集群) 安装部署好集群环境:192.168.209.133:61616,192.168.209.134:61616,192.168.209. ... 
- 成小胖学习ActiveMQ·基础篇
		过了个春节,回到公司的成小胖变成了成大胖.但是你们千万别以为他那个大肚子里面装的都是肥肉,里面的墨水也多了不少嘞,毕竟成小胖利用春节的半个月时间专心学习并研究了 ActiveMQ,嘿嘿……这不,为了检 ... 
- ActiveMQ基础教程(二):安装与配置(单机与集群)
		因为本文会用到集群介绍,因此准备了三台虚拟机(当然读者也可以使用一个虚拟机,然后使用不同的端口来模拟实现伪集群): 192.168.209.133 test1 192.168.209.134 test ... 
- ActiveMQ基础教程(一):认识ActiveMQ
		ActiveMQ是Apache软件基金会所研发开源的消息中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信. 现在的消息队列有不少,RabbitMQ.Kafka.RocketMQ,Z ... 
- ActiveMQ基础简介
		1. 什么是ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现 ... 
- ActiveMQ基础01——Linux下载安装ActiveMQ
		1.下载 下载地址:http://activemq.apache.org/ 点击按钮 下载Linux下最新版安装包,点击即可下载 2.安装ActiveMQ 将之前下载的安装包上传到linux当中,一般 ... 
随机推荐
- golang使用json格式实现增删查改
			需求和思路 在一般的小项目或者一个小软件,例如客户端之类的小程序中,可能会需要数据的持久化.但是使用一般的数据库(Mysql)之类的不合适.使用sqlite3这种嵌入式的是个较好的方法,但是Go语言中 ... 
- Kibana访问报错
			浏览器访问提示:Kibana server is not ready yet 查看日志如下 {"type":"log","@timestamp&quo ... 
- 【解决方案】ArcGIS导入要素集后没反应
			内容源自:ArcGIS10.2基础教程(丁华) 书上要求: 1.在“练习”文件夹中新建一个名为“沈阳”的个人地理数据库和名为“shenyang”的要素集,设置地理坐标为“Xi'an 1980”,高程坐 ... 
- 在windows服务中使用定时器
			在windows服务中,利用winform中直接拖动timer控件的方式使用定时器是不可以的,启动服务后会发现定时器并没有执行.那么在windows服务中如何使用定时器呢? 不使用直接拖动控件的方式 ... 
- linux 压力测试工具之ab
			简介 Apache Benchmark(简称ab) 是Apache安装包中自带的压力测试工具 ,简单易用 在此提供 ab 在 centOS7 下的安装和使用方法注:个人发现,之前安装的centos6. ... 
- MVC利用JQuery异步加载PartialView
			Javascript: $("#indexList").load('/Test/Index',{"id":"1","name&qu ... 
- C++字符串相互转换
			转自cs_wu原文 C++ char*,const char*,string的相互转换 1. string转const char* string s ="abc"; const c ... 
- 实战AudioToolbox--在iOS平台上播放音频
			上午看了关于AudioToolbox.framework相关的资料,结合网上的资料对AudioToolbox的基本使用有了整体上的认识,上一篇文章 笔谈AudioToolbox(一) 中提到使用Aud ... 
- 介绍一种在ABAP内核态进行内表高效拷贝的方法,和对应的Java和JavaScript版本的伪实现
			内表操作是ABAP开发人员几乎在每个ABAP程序里都会遇到的. 看一个例子:有两个行结构不一样的内表,每个内表的行结构有三列,除了name这一列名字一致外,其他两列的名称都不同,下图用红色和蓝色标注出 ... 
- nginx服务的基本配置
			Nginx在运行时,至少必须加载几个核心模块和一个事件类模块.这些模块运行时所支持的配置项称为基本配置.由于配置项较多,所以把它们按照用户使用时的预期功能分为四类: 用于调试.定位问题的配置项 正常运 ... 
