# activemq **Repository Path**: Hinsss/activemq ## Basic Information - **Project Name**: activemq - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-02-25 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # activemq #### 介绍 直接解压 使用 ./activemq start 命令启动 检查activemq 是否启动的三种方法: 也是三种查看后台进程的方法 ps -ef|grep activemq|grep -v grep // grep -v grep 可以不让显示grep 本来的信息 netstat -anp|grep 61616 // activemq 的默认后台端口是61616 lsof -i:61616 ActiveMQ 的前台端口为 8161, 提供控制台服务(账号:admin 密码:admin ),后台端口为61616 ,提供 JMS 服务 访问不到的坑: 1 可能是你的linux 和 windows 没有在一个网关下 2 可能你windows 的防火墙或者 linux 的防火墙没有关掉(是的,先得关掉防火墙) 3 你忘记启动activemq 的服务了 4 你启动失败了,可能是你得java 环境没配好,必须是jdk 8 或者以上 // 在队列为目的地的时候持久化消息 messageProducer.setDeliveryMode(DeliveryMode.PERSISTENT); // 队列为目的地的非持久化消息 messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); 持久化的消息,服务器宕机后消息依旧存在,只是没有入队,当服务器再次启动,消息任就会被消费。 但是非持久化的消息,服务器宕机后消息永远丢失。 而当你没有注明是否是持久化还是非持久化时,默认是持久化的消息。 编写主题的消息生产者和消费者项目,运行demo 代码地址:https://github.com/elstic/ActiveMQ ####协议 1. ActiveMQ 支持的协议有 TCP 、 UDP、NIO、SSL、HTTP(S) 、VM 默认是使用 openwire 也就是 tcp 连接 默认的Broker 配置,TCP 的Client 监听端口 61616 ,在网络上传输数据,必须序列化数据,消息是通过一个 write protocol 来序列化为字节流。默认情况 ActiveMQ 会把 wire protocol 叫做 Open Wire ,它的目的是促使网络上的效率和数据快速交互 。 使用tcp 的一些优化方案: tcp://hostname:port?key=value 它的参数详情参考:http://activemq.apache.org/tcp-transport-reference 2. NIO 协议为ActiveMQ 提供更好的性能 适合NIO 使用的场景: 1 当有大量的Client 连接到Broker 上 , 使用NIO 比使用 tcp 需要更少的线程数量,所以使用 NIO 2 可能对于 Broker 有一个很迟钝的网络传输, NIO 的性能高于 TCP 连接形式: nio://hostname:port?key=value 各种协议对比 : http://activemq.apache.org/configuring-version-5-transports.html 参考 https://note.youdao.com/ynoteshare1/index.html?id=39fb9a2ff543d021d619885806a15f05&type=note