- 浏览: 197762 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
hahalzb:
请问文件解压缩的密码是什么呀
JMS简介与ActiveMQ实战 -
ershimengx:
JMS&ActiveMQ实战(JMS+ActiveMQ ...
JMS简介与ActiveMQ实战 -
lgh1992314:
zenghuiss 写道我书读的少,你不要蒙我哦。。。over ...
Java method invoke的指令简介 -
P00116:
...
JMS简介与ActiveMQ实战 -
风会停息丶:
你好,下载完成后解压密码是多少,跟网盘下载密码一样吗
JMS简介与ActiveMQ实战
1. JMS架构
Java 消息服务(Java Message Service,简称JMS)是用于访问企业消息系统的开发商中立的API。企业消息系统可以协助应用软件通过网络进行消息交互。JMS 在其中扮演的角色与JDBC 很相似,正如JDBC 提供了一套用于访问各种不同关系数据库的公共API,JMS 也提供了独立于特定厂商的企业消息系统访问方式。
使用JMS 的应用程序被称为JMS 客户端,处理消息路由与传递的消息系统被称为JMS Provider,而JMS 应用则是由多个JMS 客户端和一个JMS Provider 构成的业务系统。发送消息的JMS 客户端被称为生产者(producer),而接收消息的JMS 客户端则被称为消费者(consumer)。同一JMS 客户端既可以是生产者也可以是消费者。
JMS 的编程过程很简单,概括为:应用程序A 发送一条消息到消息服务器(也就是JMS Provider)的某个目得地(Destination),然后消息服务器把消息转发给应用程序B。因为应用程序A 和应用程序B 没有直接的代码关连,所以两者实现了解偶。如下图:
消息传递系统的中心就是消息。一条Message 由三个部分组成:
消息的组成
1. 头(head)
每条JMS 消息都必须具有消息头。头字段包含用于路由和识别消息的值。可以通过多种方式来设置消息头的值:
a. 由JMS 提供者在生成或传送消息的过程中自动设置
b. 由生产者客户机通过在创建消息生产者时指定的设置进行设置
c. 由生产者客户机逐一对各条消息进行设置
2. 属性(property)
消息可以包含称作属性的可选头字段。他们是以属性名和属性值对的形式制定的。可以将属性是为消息头得扩展,其中可以包括如下信息:创建数据的进程、数据的创建时间以及每条数据的结构。JMS提供者也可以添加影响消息处理的属性,如是否应压缩消息或如何在消息生命周期结束时废弃消息。
3. 主体(body)
包含要发送给接收应用程序的内容。每个消息接口特定于它所支持的内容类型。JMS为不同类型的内容提供了他们各自的消息类型,但是所有消息都派生自Message接口。
StreamMessage 一种主体中包含Java基元值流的消息。其填充和读取均按顺序进行。
MapMessage 一种主体中包含一组键--值对的消息。没有定义条目顺序。
TextMessage 一种主体中包含Java字符串的消息(例如,XML消息)。
ObjectMessage 一种主体中包含序列化Java对象的消息。
BytesMessage 一种主体中包含连续字节流的消息。
例如:MapMessage 消息格式
MapMessage={ Header={ ... standard headers ... CorrelationID={123-00001} } Properties={ AccountID={Integer:1234} } Fields={ Name={String:Mark} Age={Integer:47} } }
消息的传递模型
JMS支持两种消息传递模型:点对点(point-to-point,简称PTP)和发布/订阅(publish/subscribe,简称pub/sub)。这两种消息传递模型非常相似,但有以下区别:
a. PTP消息传递模型规定了一条消息之恩能够传递费一个接收方。
b. Pub/sub消息传递模型允许一条消息传递给多个接收方
每个模型都通过扩展公用基类来实现。例如:javax.jms.Queue和Javax.jms.Topic都扩展自javax.jms.Destination类。
1. 点对点消息传递
通过点对点的消息传递模型,一个应用程序可以向另外一个应用程序发送消息。在此传递模型中,目标类型时队列。消息首先被传送至队列目标,然后从改对垒将消息传送至对此队列进行监听的某个消费者,如下图:
一个队列可以关联多个队列发送方和接收方,但一条消息仅传递给一个接收方。如果多个接收方正在监听队列上的消息,JMS Provider将根据“先来者优先”的原则确定由哪个价售房接受下一条消息。如果没有接收方在监听队列,消息将保留在队列中,直至接收方连接到队列为止。这种消息传递模型是传统意义上的拉模型或轮询模型。在此列模型中,消息不时自动推动给客户端的,而是要由客户端从队列中请求获得。
2. 发布/订阅消息传递
通过发布/订阅消息传递模型,应用程序能够将一条消息发送到多个接收方。在此传送模型中,目标类型是主题。消息首先被传送至主题目标,然后传送至所有已订阅此主题的或送消费者。如下图:
主题目标也支持长期订阅。长期订阅表示消费者已注册了主题目标,但在消息到达目标时改消费者可以处于非活动状态。当消费者再次处于活动状态时,将会接收该消息。如果消费者均没有注册某个主题目标,该主题只保留注册了长期订阅的非活动消费者的消息。与PTP消息传递模型不同,pub/sub消息传递模型允许多个主题订阅者接收同一条消息。JMS一直保留消息,直至所有主题订阅者都接收到消息为止。pub/sub消息传递模型基本上时一个推模型。在该模型中,消息会自动广播,消费者无须通过主动请求或轮询主题的方法来获得新的消息。
上面两种消息传递模型里,我们都需要定义消息生产者和消费者,生产者吧消息发送到JMS Provider的某个目标地址(Destination),消息从该目标地址传送至消费者。消费者可以同步或异步接收消息,一般而言,异步消息消费者的执行和伸缩性都优于同步消息接收者,体现在:
1. 异步消息接收者创建的网络流量比较小。单向对东消息,并使之通过管道进入消息监听器。管道操作支持将多条消息聚合为一个网络调用。
2. 异步消息接收者使用线程比较少。异步消息接收者在不活动期间不使用线程。同步消息接收者在接收调用期间内使用线程,结果线程可能会长时间保持空闲,尤其是如果该调用中指定了阻塞超时。
3.对于服务器上运行的应用程序代码,使用异步消息接收者几乎总是最佳选择,尤其是通过消息驱动Bean。使用异步消息接收者可以防止应用程序代码在服务器上执行阻塞操作。而阻塞操作会是服务器端线程空闲,甚至会导致死锁。阻塞操作使用所有线程时则发生死锁。如果没有空余的线程可以处理阻塞操作自身解锁所需的操作,这该操作永远无法停止阻塞。
2. JMS Provider(ActiveMQ)
特性及优势
1. 实现JMS1.1规范,支持J2EE1.4以上。
2. 可运行与任何JVM和大部分web容器(ActiveMQ works great in any JVM)
3. 支持多种语言客户端(java, C, C++, Ajax, ActionScript等等)
4. 支持多种协议(stomp, openwire, REST)
5. 良好的Spring支持(ActiveMQ has great Spring Support)
6. 速度很快,JBossMQ的十倍(ActiveMQ is very fast; often 10x faster than JBossMQ)
7. 与OpenJMS、JBossMQ等开源jms provider相比,ActiveMQ有apache的支持,持续发展的优势明显
Queue与Topic的比较
1. JMS Queue执行load balancer语义
一条消息仅能被一个consumer收到。如果在message发送的时候没有可用的consumer,那么它讲被保存一直到能处理该message的consumer可用。如果一个consumer收到一条message后却不响应它,那么这条消息将被转到另外一个consumer那儿。一个Queue可以有很多consumer,并且在多个可用的consumer中负载均衡。
2. Topic实现publish和subscribe语义
一条消息被publish时,他将发送给所有感兴趣的订阅者,所以零到多个subscriber将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的subscriber能够获得消息的一个拷贝。
3. 分别对应两种消息模式
Point-to-Point(点对点),Publisher/Subscriber Model(发布/订阅者)
其中在Publicher/Subscriber模式下又有Nondurable subscription(非持久化订阅)和durable subscription(持久化订阅)两种消息处理方式。
Point-to-Point(点对点)消息模式开发流程
1. 生产者(producer)开发流程
1.1 创建 Connection
// 根据url,user和password创建一个jms Connection。 ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory (user, password, url); connection = connectionFactory.createConnection(); connection.start();
1.2 创建Session
/**在connection的基础上创建一个session,同时设置是否支持事务ACKNOWLEDGE标识。 • AUTO_ACKNOWLEDGE:自动确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收。 • CLIENT_ACKNOWLEDGE:客户端确认模式。会话对象依赖于应用程序对被接收的消息调用一个acknowledge()方法。一旦这个方法被调用,会话会确认最后一次确认之后所有接收到的消息。这种模式允许应用程序以一个调用来接收,处理并确认一批消息。注意:在管理控制台中,如果连接工厂的Acknowledge Policy(确认方针)属性被设置为"Previous"(提前),但是你希望为一个给定的会话确认所有接收到的消息,那么就用最后一条消息来调用acknowledge()方法。 • DUPS_OK_ACKNOWLEDGE:允许副本的确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收;而且允许重复确认。在需要考虑资源使用时,这种模式非常有效。注意:如果你的应用程序无法处理重复的消息的话,你应该避免使用这种模式。如果发送消息的初始化尝试失败,那么重复的消息可以被重新发送。 • SESSION_TRANSACTED**/ Session session = connection.createSession( transacted, Session.AUTO_ACKNOWLEDGE);
1.3 创建Destination对象
//需指定其对应的主题(subject)名称,producer和consumer将根据subject来发送/接收对应的消息 if (topic) { destination = session.createTopic(subject); } else { destination = session.createQueue(subject); }
1.4 创建MessageProducer
//根据Destination创建MessageProducer对象,同时设置其持久模式。 MessageProducer producer = session.createProducer(destination); if (persistent) { producer.setDeliveryMode(DeliveryMode.PERSISTENT); } else { producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); } if (timeToLive != 0) { producer.setTimeToLive(timeToLive); }
1.5 发送消息到队列(Queue)
//封装TextMessage消息,使用MessageProducer的send方法将消息发送出去。 TextMessage message = session.createTextMessage("createMessageText"); producer.send(message);
2. 消费者(consumer)开发流程
2.1 实现MessageListener接口
//消费者类必须实现MessageListener接口,然后在onMessage方法中监听消息到达处理。
2.2 创建Connection
//根据url,user和password创建一个jms Connection,如果是durable模式,还需要给connection设置一个clientId。 ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url); Connection connection = connectionFactory.createConnection(); if (durable && clientId != null && clientId.length() > 0 && !"null".equals(clientId)) { connection.setClientID(clientId); } connection.setExceptionListener(this); connection.start();
2.3 创建Session和Destination
//与产品类似
2.4 创建replayProducer【可选】
//可以用来将消息处理结果发送给producer。
replyProducer = session.createProducer(null);
replyProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
2.5 创建MessageConsumer
//根据Destination创建MessageConsumer对象。
MessageConsumer consumer = null;
if (durable && topic) {
consumer = session.createDurableSubscriber((Topic)destination, consumerName);
} else {
consumer = session.createConsumer(destination);
}
2.6 消费message
//在onMessage()方法中接收producer发送过来的消息进行处理,并可以通过replyProducer反馈信息给producer if (message.getJMSReplyTo() != null) { replyProducer.send(message.getJMSReplyTo(), session.createTextMessage("Reply: " + message.getJMSMessageID())); }
Publish/Subscriber(发布/订阅者)消息开发模式
1. 订阅者(Subscriber)开发流程
1.1 实现MessageListener接口
在onMessage()方法中监听发布者发出的消息队列,并做相应处理。
1.2 创建Connection
根据url, user和password创建一个jms connection
1.3 创建Session
在connection的基础上创建一个session,同时设置是否支持和ACKNOWLEDGE标志。
1.4 创建 Topic
创建两个Topic,topictest.message用于接收发布者发出的消息,topictest.control用于向发布者发送消息,实现双方的交互。
1.5 创建consumer和producer对象
根据topictest.message创建consumer,根据topictest.control创建producer
1.6 接收处理消息
在onMessage()方法中,对收到的消息进行处理,可直接简单在本地显示消息,或者根据消息内容不同处理对应的业务逻辑(比如:数据库更新、文件操作等等),并且可以使用 producer对象处理结果返回给发布者。
2. 发布者(Publisher)开发流程
2.1 实现MessageListener接口
在onMessage()方法中接收订阅者的反馈消息。
2.2 创建Connection
根据url, user和password 创建一个 jms Connection。
2.3 创建session
在connection的基础上创建一个session,同时设置是否支持事务和ACKNOWLEDGE标志。
2.4 创建Topic
创建两个Topic,topictest.messages用于向订阅者发布消息,topictest.control用于接收订阅者反馈的消息。这两个Topic与订阅者开发流程中的topic是一一对应的。
2.5 创建consumer和producer对象
根据topictest.message创建publisher;
根据topictest.control穿件consumer,同时监听订阅者反馈的消息。
3. JMS For Spring
Spring提供了用于简化JMS API使用的抽象框架,并且对用户屏蔽了JMS API中1.0.2和1.1版本的差异。
JMS的功能大致上分为两块,叫做消息制造和消息消耗。JmsTemplate用于制造消息和同步消息接收。和J2EE的事件驱动Bean风格类似,对于异步接收消息,Spring提供了一些消息监听容器来创建消息驱动的POJO(MDP)。
1. Spring 配置 connectionFactory
<!--客户端使用普通传输方式:tcp://localhost:61616 此处需加以注意的是Listener端的borkerURL使用了failover传输方式: failover:(tcp://localhost:61616)?initialReconnectDelay=100& maxReconnectAttempts=5 failover transport是一种重新连接机制,用于建立可靠的传输。此处配置的是一旦ActiveMQ broker中断,Listener端将每隔100ms自动尝试连接,直至成功连接或重试5次连接失败为止。 failover还支持多个borker同时提供服务,实现负载均衡的同时可增加系统容错性,格式: failover:(uri1,...,uriN)?transportOptions --> <bean id="jmsFactory" destroy-method="stop" class="org.apache.activemq.pool.PooledConnectionFactory"> <property name="connectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616" /> <property name="userName" value="${activemq.username}" /> <property name="password" value="${activemq.password}" /> </bean> </property> </bean>
2. Spring JmsTemplate
<!-- Spring JMS Template JmsTemplate 类的实例 一经配置便是线程安全 的。 要清楚一点,JmsTemplate 是有状态的,因为它维护了 ConnectionFactory 的引用,但这个状态时不是会话状态。 --> <bean id="myJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="jmsFactory" /> <property name="defaultDestinationName" value="MySubject" /> <!--JMS API有两种发送方法,一种采用发送模式、 优先级和存活时间作为服务质量(QOS)参数, 默认{deliveryMode:2(1),priority:4,timeToLive:0} 另一种使用无需QOS参数的缺省值方法。 <property name="explicitQosEnabled" value="true"/> <property name="deliveryMode" value="2"/> <property name="priority" value="4"/> <property name="timeToLive" value="1000"/> --> <!-- <property name="receiveTimeout" value="1000" /> --> </bean>
3. 发送的接收消息
<bean id="destinationTopic" class="org.apache.activemq.command.ActiveMQTopic"> <constructor-arg index="0" value="HelloWorldTopic" /> </bean> <!-- 读取信息 --> <bean id="consumer" class="com.d1xn.jms.demo.Consumer"> <property name="jmsTemplate" ref="myJmsTemplate" /> </bean> <!-- 发送信息 --> <bean id="producerTopic" class="com.d1xn.jms.demo.ProducerTopic"> <property name="jmsTemplet" ref="myJmsTemplate" /> <property name="destination" ref="destinationTopic" /> </bean> <!-- 消息监听 --> <bean id="listenerContainerTopic" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsFactory" /> <property name="destination" ref="destinationTopic" /> <property name="messageListener" ref="consumer" /> <!—持久化客户端ID --> <property name="clientId" value="clientId_001" /> <property name="subscriptionDurable" value="true" /> <property name="durableSubscriptionName" value="My_001" /> </bean>
说明(基于ActiveMQ5.4.2版本):
1、Web Console 的安全配置可参考
将conf/jetty.xml下面一段xml配置:
<bean id="securityConstraint" class="org.eclipse.jetty.http.security.Constraint"> <property name="name" value="BASIC" /> <property name="roles" value="admin" /> <property name="authenticate" value="true" /> </bean>
authenticate值设置为true即可!那用户名/密码的配置是在conf/jetty-realm.properties!
详细可参考http://activemq.apache.org/web-console.html
2、连接安全配置可参考
将conf/activemq-security.xml中如下的配置
<plugins> <!-- Configure authentication; Username, passwords and groups --> <simpleAuthenticationPlugin anonymousAccessAllowed="false"> <users> <authenticationUser username="system" password="${activemq.password}" groups="admins"/> <!--<authenticationUser username="user" password="${guest.password}" groups="users"/> <authenticationUser username="guest" password="${guest.password}" groups="guests"/>--> </users> </simpleAuthenticationPlugin> </plugins>
copy至conf/activemq.xml中
<persistenceAdapter> <kahaDB directory="${activemq.base}/data/kahadb"/> </persistenceAdapter>
的下面(这是简单的用户名、密码的认证方式)!
用户名、密码的可在conf/credentials.properties配置!
详细可参考:
http://activemq.apache.org/security.html
http://activemq.apache.org/xml-reference.html
评论
网盘地址:https://pan.baidu.com/s/1qZ6O3Ic 密码: qc6y
网盘地址:https://pan.baidu.com/s/1pMjjXj1 密码: xk9e
网盘地址:http://pan.baidu.com/s/1geIXZ8n 密码:fbqg
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
01.1_JMS&ActiveMQ介绍
01.2_JMS&ActiveMQ介绍
01.3_JMS&ActiveMQ介绍
02.1_JMS消息模型
02.2_JMS消息模型
02.3_JMS消息模型
02.4_JMS消息模型
03.1_JMS消息剖析
03.2_JMS消息剖析
03.3_JMS消息剖析
04.1_JMS高级特性
04.2_JMS高级特性
04.3_JMS高级特性
04.4_JMS高级特性
04.5_JMS高级特性
04.6_JMS高级特性
04.7_JMS高级特性
05.1_Spring集成JMS
05.2_Spring集成JMS
06.1_JMS应用案例
06.2_JMS应用案例
06.3_JMS应用案例
07.1_MQ传输器&传输协议
07.2_MQ传输器&传输协议
07.3_MQ传输器&传输协议
07.4_MQ传输器&传输协议
08.1_MQ消息存储
08.2_MQ消息存储
08.3_MQ消息存储
08.4_MQ消息存储
09.1_MQ安全机制
09.2_MQ安全机制
09.3_MQ安全机制
10.1_MQ集群技术
10.2_MQ集群技术
10.3_MQ集群技术
11.1_MQ高级特性
11.2_MQ高级特性
11.3_MQ高级特性
11.4_MQ高级特性
12.1_MQ性能调优
12.2_MQ性能调优
12.3_MQ性能调优
13.1_MQ监控与管理
13.2_MQ监控与管理
13.3_MQ监控与管理
14.1_基于事件驱动案例-规则引擎
14.2_基于事件驱动案例-规则引擎
14.3_基于事件驱动案例-规则引擎
15.1_基于事件驱动案例-业务需求
15.2_基于事件驱动案例-业务需求
15.3_基于事件驱动案例-业务需求
16.1_基于事件驱动案例-数据采集
16.2_基于事件驱动案例-数据采集
17.1_基于事件驱动案例-监控规则任务
17.2_基于事件驱动案例-监控规则任务
17.3_基于事件驱动案例-监控规则任务
我设置的持久化是持久化到mysql里面
发布者publisher发完消息,设置了两个订阅者subscriber,
都消费完了消息,但是消息还在mysql中,
这个是永远都会存在持久化里面么?
之前我试了点对点模式
Queue里面的消息先持久化到数据库中,
消费者拿到消息后,数据库中的消息就直接被删除了。
所以我比较困惑为什么发布-订阅模式数据库中的消息没有被删除,
希望楼主能教我一下。
直接启动就可以了
发表评论
-
字符编码
2011-08-29 11:29 0UTF-16 用两个字节来表示 Unicode 转化格式,这个 ... -
J2EE企业架构性能关键点
2011-08-19 15:33 0硬件、操作系统的性能 1. 运算速度 --> C ... -
自用【链接贴】
2011-09-17 20:05 1647//------------------------- ... -
一些老帖引发的思考之readonly事务深入挖掘
2011-08-08 16:45 7838写这篇文章的缘由,在于读过论坛中的一些帖子引发的疑问,先来看一 ... -
Tomcat6.0.14下配置Tomcat Administration Web Application
2009-09-30 11:53 1114Tomcat5.5以后的binary核心安装版不再集成Tomc ... -
Spring的AOP应用实例
2009-10-13 10:04 1423/** * 实现org.springframework.a ... -
用Spring集成的JOTM配置分布式事务
2009-11-05 15:45 2496最近项目中涉及到了两个Oracle数据库的操作。需要用到分布式 ...
相关推荐
### ActiveMQ 实战 #### JMS 基本构件概览 **ActiveMQ** 是一个高性能、功能丰富的开源消息中间件,它实现了 **Java Message Service (JMS)** 规范。JMS 规范定义了一组接口,这些接口提供了一个标准的方式来进行...
**ActiveMQ实战(英文版)** ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循Java消息服务(JMS)规范,支持多种协议,并且跨平台运行。这本书《ActiveMQ实战(英文版)》旨在深入探讨如何在实际环境中...
ActiveMQ实战手册以介绍JMS和ActiveMQ的操作及配置为主,JMS(Java Message Service)是Java平台中对于面向消息中间件(MOM)的一种标准的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。...
#### 三、ActiveMQ实战案例介绍 - **案例概述**:本书通过一系列实例来展示如何使用ActiveMQ构建各种应用场景下的消息传递系统。 - **目的**:通过实际案例帮助读者深入了解ActiveMQ的核心概念和技术细节,并学会...
**ActiveMQ实战资料详解** Apache ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它是Java消息服务(Java Message Service,简称JMS)的一个实现。在分布式系统中,ActiveMQ扮演着至关重要的角色,它允许...
在这个“ActiveMQ实战demo”中,我们将深入探讨如何使用ActiveMQ进行消息发送和接收,并了解其工作原理。 首先,让我们了解一下JMS。JMS是Java平台上的一个标准接口,定义了生产、消费、管理和消息队列的标准API。...
Java消息服务(JMS)是Java平台上的一个标准接口,用于在分布式环境中交换异步消息。...这个教程将覆盖以上所有内容,通过学习,开发者将能够熟练地在Java应用中集成和使用JMS与ActiveMQ,实现高效、可靠的消息传递。
ActiveMQ是一种广泛使用的企业级消息中间件,它遵循JMS(Java Message Service)规范,为分布式系统中的不同应用提供可靠的消息传递服务。在本篇内容中,我们会深入探讨ActiveMQ的特性、安装与运行,以及它如何与...
在本篇《ActiveMQ实战——实现一个简易版的聊天室》中,我们将深入探讨如何利用Apache ActiveMQ构建一个简单的在线聊天应用。ActiveMQ是Apache软件基金会的一个开源项目,它是一款功能强大的消息中间件,用于在...
本视频教程通过实战的方式介绍了 ActiveMQ 的集群搭建与应用,涵盖了从基础概念到实际部署的全过程。通过学习这些知识点,不仅可以帮助开发者深入了解 ActiveMQ 的工作原理,还能够掌握如何在实际项目中有效地利用 ...
- **协议支持**:ActiveMQ支持多种消息协议,如开放消息传递接口(Openwire)、简单对象访问协议(SOAP)、Java消息服务(JMS)等。 2. **SSH框架整合** - **Spring**:Spring框架提供了对ActiveMQ的集成,可以...
综上所述,《ActiveMQDemo实战.pdf》涉及的知识点涵盖了消息队列的基本概念、ActiveMQ的基本使用、JMS API的编程模式、消息的生产与消费流程、以及消息服务的配置和安全性考虑。对于IT行业的专业人员来说,这些知识...
总的来说,这个项目为我们提供了一个实战学习JMS和ActiveMQ的平台,通过源码分析,我们可以深入理解JMS的API用法,以及如何利用这些工具构建一个简单的消息系统。这有助于我们在实际开发中更好地应用消息队列技术,...
这个学习练习项目不仅有助于理解ActiveMQ与Spring Boot的整合,还能帮助开发者掌握JMS的核心概念和实际操作。通过分析源码,你可以深入理解如何处理不同类型的JMS消息,以及如何在实际项目中应用这些技术。同时,这...
ActiveMQ 是 Apache 开源项目提供的一款高效、可靠的开源消息中间件,它实现了 Java 消息服务(Java Message Service,简称 JMS),为分布式系统中的应用提供了异步通信的能力。JMS 是一个工业标准,它定义了一组...
- **ActiveMQ**:Apache ActiveMQ 是一个开源的消息中间件,它实现了 Java Message Service (JMS) 规范,提供可靠的消息传递和队列管理。 - **JMS**:Java Message Service 是一个标准接口,用于在分布式环境中交换...
标题中的"ActiveMQ 使用Ajax 收发消息实战"指出我们将探讨如何使用ActiveMQ消息中间件与Ajax技术结合,实现Web应用程序中的异步消息传递。ActiveMQ是Apache软件基金会的一个项目,提供了一个开源的消息代理,支持...