记忆之中没有辛苦,只有遗憾。——(忘了哪看到了)
首先说一下JMS:
JMS:JAVA 消息服务。定义了Java 中访问消息中间件的接口。JMS 只是接口, 并没有给予实现,实现JMS接口的消息中间件称为JMS Provider,例如 ActiveMQ。
与之相关的几个关键字也罗列一下:
JMS Provider:实现JMS 接口的消息中间件;
PTP:Point to Point,即点对点的消息模型;
Pub/Sub:Publish/Subscribe,即发布/订阅的消息模型;
Queue:队列目标;
Topic:主题目标;
ConnectionFactory:连接工厂,JMS 用它创建连接;
Connection:JMS 客户端到JMS Provider 的连接;
Destination:消息的目的地;
Session:会话,一个发送或接收消息的线程;
MessageProducer:由Session 对象创建的用来发送消息的对象;
MessageConsumer:由Session 对象创建的用来接收消息的对象;
Acknowledge:签收;
Transaction:事务。
注意:在执行p2p或者发布订阅的时候,不要忘了首先启动从官网https://mirror.bit.edu.cn/apache//activemq/5.15.12/apache-activemq-5.15.12-bin.zip下载的
apache-activemq-5.15.12
,这是我用的版本,其他版本都行,下载下来解压后不用作任何配置,直接在bin\win64 ( 还有个win32的目录,不过没有人用32的了吧 ) 下执行activemq.bat
就行
P2P:
P2P(Point-to-Point)模型是基于队列的,生产者发消息到队列,消费者从队列接收消息,队列的存在使得消息的异步传输成为可能。和邮件系统中的邮箱一样,
队列可以包含各种消息,JMS Provider 提供工具管理队列的创建、删除。
JMS P2P 模型定义了客户端如何向队列发送消息,从队列接收消息,浏览队列中的消息。
pom文件
只新加了一个activemq-all依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.0</version>
</dependency>
provider类
package com.yuxi.test;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;
import javax.jms.*;
public class ActiveMQTest {
@Test
public void testProvider() {
// 创建一个activeMQ的连接工厂,使用三参构造器,值使用提供的默认值
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD,
ActiveMQConnectionFactory.DEFAULT_BROKER_BIND_URL);
try {
// 利用工厂生产出一个连接
Connection connection = connectionFactory.createConnection(