JMS 概述
JMS 即 Java 消息服务(Java Message Service 的简称),是 Java EE 的标准/规范之一。这种规范(标准)指出:
消息的发送应该是异步的、非阻塞的。
JMS 只是 Java EE 中定义的一组标准 API,它自身并不是一个消息服务系统,它是消息传送服务的一个抽象,也就是说它定义了消息传送的接口而并没有具体实现。
JMS 和 ActiveMQ 的关系
JMS 只是定义了一组有关消息传送的规范和标准,并没有真正实现,也就说
JMS 只是定义了一组接口而已。
ActiveMQ 安装配置
ActiveMQ 官方地址:http://activemq.apache.org/download-archives.html
目前最新版本是 ActiveMQ 5.15.8 Release,我们以 5.14.0 为例: enter image description here
因为本机是 Windows 64 位,所以下载的也是 64 位的,在 Windows 64 里执行 activemq.bat: enter image description here
如果是 linux64 位,则执行 apache-activemq-5.14.0/bin/activemq,运行结果差不多。
运行日志中看到:
ActiveMQ 控制台端口默认启动到 8161 端口,ActiveMQ 控制台界面是 enter image description here
默认登录用户名密码都是 admin。修改默认 8161 端口: enter image description here
在 jetty.xml 中的 jettyPort 对应的 port 改成你想要设置的端口就行了。
ActiveMQ 服务端端口默认是 61616 enter image description here
在 activemq.xml 中 61616 的默认端口来自 transportConnector 对应的 uri 地址,如果想要修改或新增端口,也可以在这个地方新增或修改。 enter image description here
ActiveMQ 队列查看 enter image description here
ActiveMQ 启动或停止 ActiveMQ 启动命令为activemq start, ActiveMQ 停止命令为activemq stop, 查看运行状态命令为activemq status。
这里插个小话题,在日常使用中常常有人会用 kill -9 直接杀掉进程,但是建议大家不要使用 kill -9,因为有可能 ActiveMQ 进程没有被杀掉,导致重复开启了多个。
ActiveMQ 的初步使用
基础知识普及
Java 消息队列 ActiveMQ 消息传输模式包括两种:
点对点模式 Point-to-Point(P2P)
enter image description here
在点对点模型中,每一条消息都有一个发送者和一个接收者,如图上所示。
当消息代理得到消息时,它将消息放入一个队列中。当接收者请求队列中的下一条消息时,消息会从队列中取出,并投递给接收者。因为消息投递后会从队列中删除,这样就可以保证消息只能投递给一个接收者。
特点:
每个消息只要一个消费者;
发送者和接收者在时间上是没有时间的约束,也就是说发送者在发送完消息之后,不管接收者有没有接受消息,都不会影响发送方发送消息到消息队列中;
发送方不管是否在发送消息,接收方都可以从消息队列中去到消息;
接收方在接收完消息之后,需要向消息队列应答成功。
发布/订阅模式 Publish/Subscribe(Pub/Sub)
enter image description here
在发布—订阅消息模型中,消息会发送给一个主题。与队列类似,多个接收者都可以监听一个主题。但是,与队列不同的是,消息不再是只投递给一个接收者,而是主题的所有订阅者都会接收到此消息的副本,如图上所示。