============================================================================
原创作品,允许转载。转载时请务必以超链接形式标明原始出处、以及本声明。
请注明转自:http://yunjianfei.iteye.com/blog/
============================================================================
最近有个需求是要使用activeMQ作为一个完全优先级队列,且里面的任务都是耗时很长的任务,主要特点如下:
1. 多个producer,多个consumer
2.consumer取来消息后,会去执行一些长时间的任务,期间阻塞consumer
3.没有消费的消息,中间可能会修改优先级
4.优先级高的消息必须先被消费
在使用过程中,发生了一些意外状况,因为长时间的任务,导致activeMQ判定consumer为Slow Consumers 导致在取消息的时候不是完全按照优先级来取消息。解决方案如下:
首先,在activemq.xml中配置,使其支持优先级队列以及针对Slow-Consumer做一些策略。
<destinationPolicy> <policyMap> <policyEntries> <policyEntry queue=">" producerFlowControl="false" prioritizedMessages="true" useCache="false" expireMessagesPeriod="0" queuePrefetch="1" /> <policyEntry queue=">" strictOrderDispatch="false" /> <policyEntry queue=">" > <pendingMessageLimitStrategy> <constantPendingMessageLimitStrategy limit="0"/> </pendingMessageLimitStrategy> <messageEvictionStrategy> <oldestMessageWithLowestPriorityEvictionStrategy/> </messageEvictionStrategy> </policyEntry> </policyEntries> </policyMap> </destinationPolicy>
其次,因为每个消息都是长时间的操作,一定要等消息里的命令完全执行完毕后,再向ActiveMQ发送ACK,这样就可以保证所有的消息都是按照优先级来消费的。
相关推荐
- **优先级**:可以设置消息的优先级,优先级高的消息会被优先处理。 - **消息组**:通过GroupID,可以确保相同组内的消息被同一个消费者消费,实现负载均衡。 总的来说,通过SpringBoot与ActiveMQ的整合,我们可以...
3. **配置Spring**:创建一个Spring配置文件,配置JMS连接工厂、目的地(队列或主题)以及ActiveMQ的相关属性。例如,你可以使用`<bean>`标签定义`org.apache.activemq.ActiveMQConnectionFactory`,并设置URL、...
同时,还可以学习如何设置和使用ActiveMQ的配置文件,以定制队列的行为。 总之,ActiveMQ的队列模式是理解消息中间件核心概念的关键,它可以帮助你构建可靠的分布式系统,解决同步问题,提升系统的可扩展性和可用性...
在IT行业中,Apache ActiveMQ是一个广泛使用的开源消息代理和队列服务器,它是Java Message Service (JMS) 的实现,能够处理各种消息传递模式,包括点对点和发布/订阅。这篇"ActiveMQ学习笔记之九--发送消息到队列中...
1. **配置ActiveMQ**:设置ActiveMQ服务器,这可能包括下载和启动ActiveMQ实例,以及配置相关的连接参数(如URL、端口等)。 2. **添加依赖**:在Java项目中,我们需要添加ActiveMQ的客户端库依赖,通常通过Maven或...
在本示例中,我们将探讨如何使用Maven构建项目,结合Spring框架来实现ActiveMQ的Topic队列模式。 Topic队列模式是ActiveMQ中的一种发布/订阅模型。与点对点(Queue)模型不同,Topic模式允许多个消费者同时订阅同一...
ActiveMQ提供了多种策略来处理积压,如死信队列、优先级队列和时间戳策略等。例如,你可以设置消息的TTL(Time To Live)属性,让过期的消息自动删除,以避免无限增长的积压。 此外,ActiveMQ还支持多种协议,如...
### ActiveMQ 使用手册知识点概述 #### 一、ActiveMQ 原理与基本构件 ...以上知识点全面覆盖了ActiveMQ的核心概念、配置细节、集群方式以及监控和使用注意事项等方面,帮助用户深入了解并高效使用ActiveMQ。
在本文中,我们将深入探讨ActiveMQ的使用、安装及其初始化页面的设置。 首先,ActiveMQ是一个高性能、可靠的分布式消息传递系统,允许应用程序之间通过消息进行异步通信。这种通信模式能够提高系统的可伸缩性和解耦...
这只是一个简单的入门起点,实际应用中,ActiveMQ还有许多高级特性和配置,如消息优先级、消息过滤、集群部署等,都需要深入学习和实践。希望这个实例能帮助你打开消息队列的大门,进一步探索分布式系统中的通信奥秘...
ActiveMQ 的高级特性也是教程的重点,例如事务支持、优先级队列、消息分页和网络集群。事务支持确保了消息的原子性,保证了数据一致性;优先级队列使得高优先级的消息可以优先处理;消息分页则解决了大数据量下的...
在实际项目中,还可以利用ActiveMQ的其他特性,如事务消息、持久化消息、优先级队列等,以满足更复杂的业务需求。同时,ActiveMQ支持集群部署,能够提供高可用性和负载均衡,进一步增强系统的稳定性。 总之,通过...
在实际开发中,需要注意性能优化,例如合理配置ActiveMQ服务器,使用预分配的缓冲区减少内存分配,以及使用批量发送减少网络开销。同时,良好的错误处理和异常处理机制也是必不可少的,以确保系统在遇到问题时能正常...
对于需要顺序保证的场景,ActiveMQ可以创建有序队列,通过设置消息的优先级和使用单个消费者来保证消息的处理顺序。然而,这可能会影响系统的整体吞吐量。 7. **ActiveMQ如何实现消息确认机制?** ActiveMQ支持两...
此外,ActiveMQ还提供了一些高级功能,如消息优先级、消息过滤(通过订阅模式)、消息重试和死信队列等。 总结来说,OSS上传涉及到云存储服务的使用,包括身份验证、文件上传和管理,而ActiveMQ则是实现系统间异步...
本文将深入探讨ActiveMQ的核心特性、应用场景以及使用方法。 一、ActiveMQ核心特性 1. **多协议支持**:ActiveMQ支持多种通信协议,包括OpenWire、Stomp、AMQP、MQTT和WebSockets,这使得它能够与不同平台和语言的...
ActiveMQ的特性包括事务处理、持久化、消息优先级和时间戳,以及基于网络的集群能力。 二、ActiveMQ的配置 1. **配置文件**:ActiveMQ的主要配置文件是`conf/activemq.xml`。这个XML文件定义了ActiveMQ服务器的行为...
ActiveMQ支持设置消息优先级,允许高优先级的消息优先被消费。同时,为了处理请求超时的情况,客户端可以设置一个超时时间,如果在规定时间内未收到响应,可以选择重新发送请求或者采取其他补偿措施。 5. **事务...
ActiveMQ因其强大的功能、灵活的配置以及广泛的兼容性,在企业级应用中被广泛使用。 #### 二、ActiveMQ应用场景 ##### 2.1 业务解耦 在实际业务场景中,系统之间的交互往往需要通过复杂的调用来完成。使用消息...
- **消息优先级**:可以设置消息优先级,优先处理高优先级消息。 - **事务支持**:JMS事务确保消息的一致性,即使在部分失败的情况下也能保证数据完整性。 总的来说,Apache ActiveMQ是一款功能强大的消息中间件,...