`

ActiveMQ 了解

jms 
阅读更多

 

Active MQ JMS的一个具体实现,所以首先要对JMS有所了解。

<!--[if !supportLists]-->1. <!--[endif]-->JMS:

定义Java消息服务(Java Message Service,Sun是提出来的为J2EE提供企业消息处理的一套规范,他提供了创建,发送,接受,读取消息的服务。能接受消息生产者的(Message Producer)发出的消息,并把消息转发给消息消费者(Message Consumer)。(简单的说:Jms就是一个 处理消息发送 和接受的东东!)

<!--[if !supportLists]-->2. <!--[endif]-->JMS消息组成

JMS中的消息传递系统中传递的东东就是消息(Message)。其结构图如下:

<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter" /> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0" /> <v:f eqn="sum @0 1 0" /> <v:f eqn="sum 0 0 @1" /> <v:f eqn="prod @2 1 2" /> <v:f eqn="prod @3 21600 pixelWidth" /> <v:f eqn="prod @3 21600 pixelHeight" /> <v:f eqn="sum @0 0 1" /> <v:f eqn="prod @6 1 2" /> <v:f eqn="prod @7 21600 pixelWidth" /> <v:f eqn="sum @8 21600 0" /> <v:f eqn="prod @7 21600 pixelHeight" /> <v:f eqn="sum @10 21600 0" /> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o:lock v:ext="edit" aspectratio="t" /> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:274.5pt; height:337.5pt'> <v:imagedata src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.png" o:title="" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
Message
分为三个组成部分:

第一部分
头(header)是个标准字段集,客户机和供应商都用它来标识和路由消息。

第二部分
属性(property)支持把可选头字段添加到消息。如果您的应用程序需要不使用标准头字段对消息编目和分类,您就可以添加一个属性到消息以实现这个编目和分类。提供 set<Type>Property(...) get<Type>Property(...) 方法以设置和获取各种 Java 类型的属性,包括 ObjectJMS 定义了一个供应商选择提供的标准属性集。

第三部分
消息的主体(body)包含要发送给接收应用程序的内容。每个消息接口特定于它所支持的内容类型。
JMS
为不同类型的内容提供了它们各自的消息类型,但是所有消息都派生自 Message 接口。
· StreamMessage
:包含 Java 基本数值流,用标准流操作来顺序的填充和读取。
· MapMessage
:包含一组名/值对;名称为 string 类型,而值为 Java 的基本类型。
· TextMessage
:包含一个 String
· ObjectMessage
:包含一个 Serializable Java 对象;能使用 JDK 的集合类。
· BytesMessage
:包含未解释字节流: 编码主体以匹配现存的消息格式。
· XMLMessage:
包含XML内容。扩展TextMessage,XMLMessage 类型的使用,使得消息过滤非常便利。

3. JMS消息通信模型有两种
JMS是用于和面向消息的中间件相互通信的应用程序接口。

1)支持点对点(point-to-point)的域(简称PTP),

点对点消息传递域(PTP的特点如下:

每个消息只能有一个消费者。

消息的生产者和消费者之间没有时间上的相关性。无论消费者在生产者发

送消息的时候是否处于运行状态,它都可以提取消息。

2)支持发布/订阅(publish/subscribe)类型的域(简称PUB/SUB)),

并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另一种方式来对您的应用与旧的后台系统相集成。

发布/订阅消息传递域(PUB/SUB的特点如下:

每个消息可以有多个消费者。

生产者和消费者之间有时间上的相关性。订阅一个主题的消费者只能消费

自它订阅之后发布的消息。JMS 规范允许客户创建持久订阅,这在一定程

度上放松了时间上的相关性要求。持久订阅允许消费者消费它在未处于激

活状态时发送的消息。

注意:在点对点(PTP)消息传递域中,目的地被成为队列(queue;在发布/订阅(PUB/SUB)消息传递域中,目的地被成为主题(topic)。

queuetopic之间的详解图:

 

Topic

Queue

概要

Publish Subscribe messaging 发布订阅消息

Point-to-Point 点对点

有无状态

topic数据默认不落地,是无状态的。

Queue数据默认会在mq服务器上以文件形式保存,比如Active MQ一般保存在$AMQ_HOME/data/kr-store/data下面。也可以配置成DB存储。

完整性保障

并不保证publisher发布的每条数据,Subscriber都能接受到。

Queue保证每条数据都能被receiver接收。

消息是否会丢失

一般来说publisher发布消息到某一个topic时,只有正在监听该topic地址的sub能够接收到消息;如果没有sub在监听,该topic就丢失了。(必须监听才能接收到消息)

Sender发送消息到目标Queuereceiver可以异步接收这个Queue上的消息。Queue上的消息如果暂时没有receiver来取,也不会丢失。

消息发布接收策略

一对多的消息发布接收策略,监听同一个topic地址的多个sub都能收到publisher发送的消息。Sub接收完通知mq服务器

一对一的消息发布接收策略,一个sender发送的消息,只能有一个receiver接收。receiver接收完后,通知mq服务器已接收,mq服务器对queue里的消息采取删除或其他操作。

4.消息发出去后的确认模式

应用程序创建的会话有一般有5 种确认模式(非事务)。

五种确认模式说明:
· AUTO_ACKNOWLEDGE
:自动确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收。
· CLIENT_ACKNOWLEDGE
:客户端确认模式。会话对象依赖于应用程序对被接收的消息调用一个acknowledge()方法。一旦这个方法被调用,会话会确认最后一次确认之后所有接收到的消息。这种模式允许应用程序以一个调用来接收,处理并确认一批消息。注意:在管理控制台中,如果连接工厂的Acknowledge Policy(确认方针)属性被设置为"Previous"(提前),但是你希望为一个给定的会话确认所有接收到的消息,那么就用最后一条消息来调用acknowledge()方法。
· DUPS_OK_ACKNOWLEDGE
:允许副本的确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收;而且允许重复确认。在需要考虑资源使用时,这种模式非常有效。注意:如果你的应用程序无法处理重复的消息的话,你应该避免使用这种模式。如果发送消息的初始化尝试失败,那么重复的消息可以被重新发送。
· NO_ACKNOWLEDGE
:不确认模式。不确认收到的消息是需要的。消息发送给一个NO_ACKNOWLEDGE 会话后,它们会被WebLogic 服务器立即删除。在这种模式下,将无法重新获得已接收的消息,而且可能导致下面的结果:1. 消息可能丢失;和(或者)另一种情况:2. 如果发送消息的初始化尝试失败,会出现重复消息被发送的情况。
· MULTICAST_NO_ACKNOWLEDGE
IP组播下的不确认模式,同样无需确认。发送给一个MULTICAST_NO_ACKNOWLEDGE会话的消息, 会共享之前所述的NO_ACKNOWLEDGE 确认模式一样的特征。这种模式支持希望通过IP 组播方式进行消息通信的应用程序,而且无需依赖会话确认提供的服务质量。注意:如果你的应用程序无法处理消息的丢失或者重复,那么你应该避免使用这种模式。如果发送消息的初始化尝试失败的话,重复的消息可能会被再次发送。
注:在上表的5 种确认模式中,AUTO_ACKNOWLEDGE DUPS_OK_ACKNOWLEDGE
CLIENT_ACKNOWLEDGE
JMS 规范定义的,NO_ACKNOWLEDGE MULTICAST_NO_ACKNOWLEDGEWebLogic JMS 提供的。)

5 JMS 支持以下两种消息提交模式

. PERSISTENT。指示 JMS provider 持久保存消息,以保证消息不会因为 JMS

provider 的失败而丢失。(当服务器重启之后,之前的发送PERSISTENT消息,会获取到!

.NON_PERSISTENT。不要求 JMS provider 持久保存消息。(当服务器重启之后,之前的发送NON_PERSISTENT消息,会获取不到!)

 

6.一种典型的JMS 程序需要经过下列几个步骤:
·
通过 JNDI 查找 ConnectionFactory
·
ConnectionFactory 创建一个 Connection
·
Connection 创建一个或多个 Session
·
Session Destination 创建所需的 MessageProducer MessageConsumer
·
启动 Connection(下面是对应的截图说明)

<!--[if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75" alt="JMS编程模型" style='width:298.5pt;height:223.5pt'> <v:imagedata src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image003.jpg" o:href="http://infocenter.apusic.com/help/topic/amq/v6/img/mq/jms-program-model.jpg" /> </v:shape><![endif]--><!--[if !vml]-->JMS编程模型<!--[endif]-->

JMS 各个步骤的详细介绍

先简单介绍JMS的服务器端

0Broker :可以JMS Brokers看做服务器端,这个服务器可以独立运行,也可以随着其他容器,并且它是以内嵌的方式运行,如下配置

BrokerService broker = new BrokerService();

broker.addConnector("tcp://localhost:61616");

broker.start();

此外,也可以通过BrokerFactory来创建broker,例如:

BrokerService broker = BrokerFactory.createBroker(new URI(someU

RI));

通过ActiveMQConnectionFactory还可以隐含创建内嵌的broker后面的实例代码会用到

下面正正式介绍每一个步骤

(1)接工 (ConnectionFactory)

接工是客来创接的.

例如: ActiveMQ 提供的ActiveMQConnectionFactory注意要初始化 JMS,则需要使用连接工厂。客户端通过创建 ConnectionFactory建立到 ActveMQ的连接,一个连接工厂封装了一组连接配置参数,这组参数在配置ActiveMQ时已经定义,例如brokerURL参数,此参数传入的是ActiveMQ服务地址和端口,支持openwire协议的默认连接为 tcp://localhost:61616,支持 stomp协议的默认连接为tcp://localhost:61613
ActiveMQConnectionFactory
构造方法

ActiveMQConnectionFactory();

ActiveMQConnectionFactory(String brokerURL);

ActiveMQConnectionFactory(String userName, String password, String b rokerURL) ; ActiveMQConnectionFactory(String userName, String password, URI brok erURL) ; ActiveMQConnectionFactory(URI brokerURL); 其中 brokerURLActiveMQ服务地址和端口
例如:
  ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192. 168.0.135:61616");
  或者
  ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
  connectionFactory. setBrokerURL("tcp://192.168.0.135:61616");

(2) (Connection)

Connection 封装了客户与 JMS 提供者之的一个虚拟接。

注意

当一个Connection被创建时,它的传输默认是关闭的,必须使用start方法开启。一个Connection可以建立一个或多个的Session。当一个程序执行完成后,必须关闭之前创建的Connection,否则 ActiveMQ不能释放资源,关闭一个Connection同样也关闭了 SessionMessageProducerMessageConsumer

3会话(Seesion)

Session 是生和消消息的一个单线程上下文。

会话用于建消息生者(producer)、消息消者(consumer)和消息(message)等。会话提供了一性的上下文,在这个上下文中,一组发送和接收被合到了一原子操作中。

4)目的地

目的地是客指定的消息的目的消息的源的象。

JMS1.0.2 范中定两种消息传递域:点点(PTP)消息传递域和/订阅

消息传递域。(关于PTPPUB/SUB 在“JMS消息通信模型有两种“ 有详细介绍!

消息生producer用于把消息送到一目的地。

消息消consumer用于接收送到目的地的消息。

息的消可以采用以下两种方法之一:

同步消。通过调用消者的 receive 方法目的地中式提取消息。

receive 方法可以一直阻塞到消息到

步消。客可以者注消息听器Listener,以定在消息到达时所采取的作。

 

7.现在进行简单的实例的配置和测试

Active MQ配置和启动:

比如我下的是最新的包apache-activemq-5.4.2-bin.zip

1、安装文件:apache-activemq-5.4.2-bin.zip

  2、安装过程:解压缩到apache-activemq-5.4.2-bin.zip到一个目录,比如C:/Program Files/apache-activemq-5.4.2


  3ActiveMQ配置文件在C:/Program Files/apache-activemq-5.4.2/conf/activemq.xml,采用默认的配置就可以运行了,多台做集群时可以修改该文件。

  4、启动ActiveMQ:运行C:/Program Files/apache-activemq-5.4.2/bin/activemq.bat

  5、测试

  ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否进入DOS:netstat -an|find "61616"

  TCP 0.0.0.0:61616 0.0.0.0:0 LISTENING

  6、监控

  ActiveMQ5.0版本默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQadmin应用。

  demohttp://127.0.0.1:8161/demo/
下面是一个简单的例子(一个简单的实例)

我先建一个简单的Java Project 项目(项目名称activemq),

并且将我自己的安装目录C:/Program Files/apache-activemq-5.4.2下的activemq-all-5.4.2.jar的包加入到Reference Libraries中,这个包包含了所有jms接口api的实现。

消息的生产者ProducerTool

import javax.jms.Connection;

import javax.jms.DeliveryMode;

import javax.jms.Destination;

import javax.jms.JMSException;

import javax.jms.MessageProducer;

import javax.jms.Session;

import javax.jms.TextMessage;

import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnection;

import org.apache.activemq.ActiveMQConnectionFactory;

public class ProducerTool {

private String user = ActiveMQConnection.DEFAULT_USER; //默认 用户

private String password = ActiveMQConnection.DEFAULT_PASSWORD; //默认 密码

private String url = ActiveMQConnection.DEFAULT_BROKER_URL; //默认的是localhost:8080

private String subject = "TOOL.DEFAULT"; //消息目的地名称

private Destination destination = null; //在点对点(PTP)消息传递域中,目的地被成为队列(queue

private Topic topic=null;//在发布/订阅(PUB/SUB)消息传递域中,目的地被成为主题(topic)。

private Connection connection = null; //初始化 一个JMS客户端到JMS Provider的连接

private Session session = null; //初始化 一个发送消息的进程

private MessageProducer producer = null; //初始化 消息生产者 (它是由session 创建的)

// 初始化

private void initialize() throws JMSException, Exception {

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(

user, password, url);

connection = connectionFactory.createConnection();

//false 参数表示 为非事务型消息,后面的参数表示消息的确认类型(见4.消息发出去后的确认模式)

session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

//PTP消息方式 目的地被成为队列(queue

destination = session.createQueue(subject);

producer = session.createProducer(destination);

//在发布/订阅(PUB/SUB)消息,目的地被成为主题(topic)。

/*topic=session.createTopic(subject);

producer=session.createProducer(topic);

*/

//消息模型为非持久型

producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

}

// 发送消息

public void produceMessage(String message) throws JMSException, Exception {

initialize();

TextMessage msg = session.createTextMessage(message);

connection.start();

System.out.println("Producer:->Sending message: " + message);

producer.send(msg);

System.out.println("Producer:->Message sent complete!");

}

// 关闭连接

public void close() throws JMSException {

System.out.println("Producer:->Closing connection");

if (producer != null)

producer.close();

if (session != null)

session.close();

if (connection != null)

connection.close();

}

}

消息的消费者ConsumerTool
import javax.jms.Connection;

import javax.jms.Destination;

import javax.jms.JMSException;

import javax.jms.MessageConsumer;

import javax.jms.Session;

import javax.jms.MessageListener;

import javax.jms.Message;

import javax.jms.TextMessage;

import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnection;

import org.apache.activemq.ActiveMQConnectionFactory;

public class ConsumerTool implements MessageListener {

private String user = ActiveMQConnection.DEFAULT_USER; //默认 用户

private String password = ActiveMQConnection.DEFAULT_PASSWORD; //默认 密码

private String url = ActiveMQConnection.DEFAULT_BROKER_URL; //默认的是localhost:8080

private String subject = "TOOL.DEFAULT"; //消息目的地名称

private Destination destination = null; //在点对点(PTP)消息传递域中,目的地被成为队列(queue

private Topic topic=null;//在发布/订阅(PUB/SUB)消息传递域中,目的地被成为主题(topic)。

private Connection connection = null; //初始化 一个JMS客户端到JMS Provider的连接

private Session session = null; //初始化 一个接受消息的进程

private MessageConsumer consumer = null; //初始化 消息消费者

// 初始化

private void initialize() throws JMSException, Exception {

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(

user, password, url);

connection = connectionFactory.createConnection();

//false 参数表示 为非事务型消息,后面的参数表示消息的确认类型(见4.消息发出去后的确认模式)

session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

//PTP消息方式 目的地被成为队列(queue

destination = session.createQueue(subject);

consumer = session.createConsumer(destination);

//在发布/订阅(PUB/SUB)消息,目的地被成为主题(topic)。

/*topic=session.createTopic(subject);

consumer = session.createConsumer(topic);

*/

}

// 消费消息

public void consumeMessage() throws JMSException, Exception {

initialize();

connection.start();

System.out.println("Consumer:->Begin listening...");

//接受消息方式1:消息的异步接收 监听 实现MessageListener接口,每当消息到达时,ActiveMQ会调用MessageListener中的onMessage函数。

consumer.setMessageListener(this);

//接受消息方式2:消息的同步 主动接受消息 recieve方式

/* TextMessage textMessage = (TextMessage)consumer.receive();

if(null!=textMessage)

System.out.println(textMessage.getText());

else

System.out.println(""); */

}

// 关闭连接

public void close() throws JMSException {

System.out.println("Consumer:->Closing connection");

if (consumer != null)

consumer.close();

if (session != null)

session.close();

if (connection != null)

connection.close();

}

// 消息处理函数

public void onMessage(Message message) {

try {

if (message instanceof TextMessage) {

TextMessage txtMsg = (TextMessage) message;

String msg = txtMsg.getText();

System.out.println("Consumer:->Received: " + msg);

} else {

System.out.println("Consumer:->Received: " + message);

}

} catch (JMSException e) {

e.printStackTrace();

}

}

}

test测试类

import javax.jms.JMSException;

public class test {

/**

* @param args

*/

public static void main(String[] args) throws JMSException, Exception {

ConsumerTool consumer = new ConsumerTool();

ProducerTool producer = new ProducerTool();

//接受消息方式一:通过监听Listener 开始监听

consumer.consumeMessage();

// 延时500毫秒之后发送消息

Thread.sleep(500);

producer.produceMessage("Hello, world!");

//接受消息方式2:主动方式, 必须在producer产生消息后,去获取,否则获取不到

//consumer.consumeMessage();

producer.close();

// 延时500毫秒之后停止接受消息

Thread.sleep(500);

consumer.close();

}

}

/*消息的同步与异步接收

 消息的同步接收是指客户端主动去接收消息,客户端可以采用MessageConsumerreceive方法去接收下一个消息。

 消息的异步接收是指当消息到达时,ActiveMQ主动通知客户端。客户端可以通过注册一个实现 MessageListener接口的对象到MessageConsumer

MessageListener只有一个必须实现的方法onMessage,它只接收一个参数,即Message

在为每个发送到Destination的消息实现onMessage时,将调用该方法。

Message receive() Message receive(long timeout) Message receiveNoWait()

其中timeout为等待时间,单位为毫秒。*/

先启动ActiveMQ

运行test类的运行结果

<!--[if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:414.75pt;height:100.5pt'> <v:imagedata src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image004.png" o:title="" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->

在学习ActiveMQ的过程中要注意的地方:

1.注意activeMQ 内含了jefft 服务器,所以要在运行activeMQ实例之前要,启动activemq.bat.
2.
主要引用的的包activemq-all-5.4.2.jar 就可以了,他包jms所需要的接口。

3.对于消息topic模式,接受消息的那一方,要使用监听方式,获取消息,否则获取不到。

未解决:

tomcat activemq整合失败,正在尝试.

(activemq官方也有个HelloWorld例子,http://activemq.apache.org/hello-world.html)

分享到:
评论

相关推荐

    activeMQ收发工具.rar

    ActiveMQ是中国最流行的开源消息中间件之一,由Apache软件基金会开发。它基于Java Message Service (JMS) 规范,提供了可靠的消息传递功能,适用于分布式系统中的应用间通信。本压缩包“activeMQ收发工具.rar”包含...

    jdk activemq

    在探讨JDK与ActiveMQ版本对应关系之前,我们首先了解下两者的基本概念。 #### JDK(Java Development Kit) JDK是Java开发工具包的简称,它包含了Java运行环境(JRE)、Java工具、Java基础类库等。JDK是编写Java...

    apache-activemq-5.17.3

    在深入探讨其具体内容之前,我们首先需要了解ActiveMQ的基本概念以及它与Java开发环境的关系。 ActiveMQ作为一款消息中间件,主要负责在分布式系统中传递消息,实现应用程序间的解耦。它支持多种协议,包括开放的...

    activemq

    通过上述内容的学习,我们可以了解到 ActiveMQ-CPP 提供了丰富的功能来支持 C++ 开发者进行消息队列的开发。无论是对于初学者还是有经验的开发者来说,理解这些概念都是非常重要的。掌握了 CMS 的基本原理和 ...

    mqttjs(activemq测试工具)

    此外,为了更好地测试ActiveMQ,了解ActiveMQ的配置和特性也很重要。例如,了解如何设置权限、配置网络传输、日志记录以及性能优化等。ActiveMQ支持多种持久化机制,包括KahaDB和JDBC,可以根据需求选择合适的存储...

    apache-activemq-5.0.0-src.zip_ActiveMQ 源代码_activemq_activemq.src

    7. **构建系统**:ActiveMQ通常使用Maven作为构建工具,源代码中会有相关的`pom.xml`文件,通过这些文件可以了解项目的依赖关系和构建过程。 8. **测试框架**:源代码会包含单元测试和集成测试,以确保ActiveMQ的...

    activemq 配置说明与activemq入门讲解

    通过以上内容,你应该对ActiveMQ有了初步了解。实际使用时,根据业务需求调整配置,并结合JMS API进行应用开发,就能充分发挥ActiveMQ在消息传递中的作用。记得定期备份配置文件和数据存储,以防止数据丢失。同时,...

    ActiveMQ问题解决记录

    总之,"ActiveMQ问题解决记录"这个主题涵盖了从基础使用到高级调试的多个方面,涉及了源码理解、工具应用和问题排查等多个技能点,对于想要深入了解和优化ActiveMQ的开发者来说,是一份宝贵的资源。

    ActiveMQ接受和发送工具.rar

    在使用ActiveMQ时,了解以下几个关键知识点是至关重要的: 1. **Java Message Service (JMS)**:JMS是一种API,用于在不同的应用程序之间通过消息传递进行通信。它定义了生产、存储、消费和传输消息的标准接口,...

    Spring集成ActiveMQ配置

    首先,让我们了解Spring框架。Spring是Java开发中最广泛使用的开源框架,它提供了一整套服务,如依赖注入(DI)、面向切面编程(AOP)、数据访问、事务管理等,用于简化企业级应用的开发。 ActiveMQ则是Apache软件...

    自己实现的ActiveMQ连接池和新版本ActiveMQ自带的连接池,封装好的工具类,可直接使用

    本资源提供的内容是关于ActiveMQ的连接池实现,分为两部分:一是作者自己实现的ActiveMQ连接池,二是新版本ActiveMQ自带的连接池。连接池是一种资源管理技术,通过复用已建立的数据库连接或网络连接,减少创建和销毁...

    activemq_demo,activeMQ的简单demo

    通过这个简单的ActiveMQ demo,你可以深入学习消息中间件的核心概念,了解如何在实际项目中运用ActiveMQ进行高效的消息传递,提升系统的并发处理能力和解耦能力。同时,这个过程也有助于掌握JMS规范,为后续更复杂的...

    ActiveMQ入门

    ### ActiveMQ 入门知识点详解 #### 一、ActiveMQ 概述 **ActiveMQ** 是由 Apache 软件基金会开发的一款免费且...通过本文的介绍,希望能帮助读者深入了解 ActiveMQ 的核心特性和应用场景,为实际项目的实施提供参考。

    Apache ActiveMQ Artemis.pdf

    文档可以作为开发者下载学习的资源,以了解ActiveMQ Artemis的使用和管理。 ActiveMQ Artemis支持的标签"服务器编程 消息队列 activeMQ"强调了其在服务器编程中消息队列技术的定位以及与ActiveMQ家族的关联。 文档...

    ActiveMQ实践入门指南_ActiveMQ实践入门指南_源码

    本指南将带你逐步了解如何开始使用ActiveMQ,并深入探讨其核心功能和实践应用。 一、ActiveMQ简介 ActiveMQ是Apache软件基金会的一个项目,它遵循JMS规范,支持多种协议,包括OpenWire、STOMP、AMQP、MQTT和WS-...

    springboot整合activemq案例

    首先,我们需要了解Spring Boot和ActiveMQ的基本概念。 Spring Boot是一个快速开发框架,它简化了基于Spring的应用程序创建过程,提供了自动配置、内嵌服务器等功能,使得开发人员能够更专注于业务逻辑,而非基础...

    7道消息队列ActiveMQ面试题!

    ActiveMQ是一款非常流行的开源消息队列中间件,它实现了JMS...了解和掌握这些知识点,有助于面试者在面试中展示对ActiveMQ的深入理解和实际应用能力,同时也是确保在日常开发工作中正确、高效使用消息队列的重要基础。

    ActiveMQ讲义.ppt

    **ActiveMQ深度解析** ...通过本讲义的学习,读者将能够全面了解ActiveMQ的基本原理和操作,为在实际项目中应用ActiveMQ打下坚实的基础。在实践中,不断探索和优化,才能充分发挥ActiveMQ在复杂分布式系统中的价值。

    分享一些ActiveMQ的资料

    "ActiveMQ in Action"是一本权威的ActiveMQ专著,深入探讨了ActiveMQ的高级特性,如集群、持久化、网络连接等,适合已经有一定基础并希望深入了解的开发者。 通过这些资料,用户可以系统性地学习和掌握ActiveMQ,...

Global site tag (gtag.js) - Google Analytics