`

【转】如何利用activemq组装自己的可靠消息事务性消息

 
阅读更多

转自  http://blog.csdn.net/kongqz/article/details/8912000

 

1、我们为什么需要可靠消息?或者希望消息带有事务?

(1)、我们的某些业务场景希望消息的发送消息和数据库操作是绑定到一起的-》-需要事务性消息

(2)、我们某些业务场景不希望对外的消息发送丢失,导致业务无法继续--》消息要可靠

 

2、消息可靠了,我们会损失什么?

(1)、消息的顺序性

      因为有些消息可能因为网络等原因当时发送不出去,后续的消息先发送出去被消费。后续的网络

 

(2)、消息的实时性

   有些消息

 

(3)、业务必须幂等--》额外的重复接收消息处理的工作量

 

3、一个activemq消息服务器会出现哪些问题?

(1)、消息丢失

   没发送到broker上就一定丢失了,在broker上消息丢失,从broker到订阅者过程中丢失

 

(2)、并发量大的时候承接不了,服务器假死

  单个mq服务器在并发量大的时候会出现网络io等,cpu爆满的瓶颈。

 

(3)、集群的failover失败

 有些消息体很大的时候。当主服务器假死的时候,从服务器是不知道的。所以无法进行failover。

 

4、如何解决较大的并发量?

(1)、创建多组集群,在多组集群上创建相同的队列。集群采用failover的方式做ha

(2)、封装生产者客户端,将消息轮询发送到多组集群的队列上。

(3)、封装订阅者客户端,监控多组集群的相同队列,将消息消费。

 

 

5、如何解决这些问题

(1)、没发送到broker上就丢失了:在发送broker之前,将消息本地化存储。收到发送成功的反馈后移除本地文件。实时检索本地文件,发现超过一定时间没有发送直接重新发送。

(2)、在broker上丢失:将broker的持久化改成数据库,将数据库做主从处理

(3)、从broker到订阅者丢失:在没有收到订阅者成功接收的时候,不移除broker的持久化数据,其实这个貌似有事务支持

(4)、集群的failover失败:建立一个测试队列,定时发送消息测试每个节点是否服务正常。只能通过之类心跳类监控手段来确认服务器是否正常。

 

6、现阶段市场上有哪些解决方案

阿里的notify策略比较类似。metaq更加侧重的是订阅端的数据pull

分享到:
评论

相关推荐

    activeMQ发送消息返回消息

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它基于Java消息服务(JMS)规范,用于在分布式系统中提供高效、可靠的消息传递。在ActiveMQ中,发送和接收消息是一个核心功能,它允许应用程序之间进行异步...

    SpringBoot+ActiveMq+MQTT实现消息的发送和接收

    在实际应用中,你可能还需要考虑消息的可靠性、顺序性、幂等性以及错误处理等复杂问题。例如,使用事务性Session来保证消息的可靠投递,或者通过消息ID来防止重复处理消息。 总结来说,SpringBoot、ActiveMQ和MQTT...

    7道消息队列ActiveMQ面试题!

    它实现了JMS(Java Message Service,Java消息服务)1.1规范,面向消息的中间件(Message Oriented Middleware,MOM)是指利用高效可靠的消息传递机制进行与平台无关的通信的系统,ActiveMQ就是这样的一个系统,能够...

    SpringBoot快速玩转ActiveMQ消息队列

    它提供了高可用性、可伸缩性和持久性,确保消息的可靠传输,使得分布式系统中的组件可以解耦并独立工作。 **二、SpringBoot与ActiveMQ整合** SpringBoot简化了ActiveMQ的配置过程。在SpringBoot应用中,我们可以...

    用C#实现的ActiveMQ发布/订阅消息传送

    在IT行业中,消息队列(Message Queue)是一种重要的中间件技术,它允许应用程序之间通过异步通信进行数据交换。...通过分析和运行这些示例,你可以深入理解如何在实际项目中利用NMS库来构建高效、可靠的分布式系统。

    spring 整合activemq实现自定义动态消息队列

    百度spring整合activemq 发现几乎都只是在xml文件配置固定的消息队列而且太麻烦。并没有根据需求进行动态生成主题和队列。本文档参考了纯粹的activemq java代码和百度上的demo,很简洁的实现了动态消息队列的生成和...

    ActiveMQ学习笔记之九--发送消息到队列中

    队列是一种先进先出(FIFO)的数据结构,每个消息只会被一个消费者接收和处理,确保消息的有序性和可靠性。在Java环境中,我们可以使用JMS API来与ActiveMQ进行交互。 1. **JMS接口**: JMS提供了两个核心接口,`...

    ActiveMQ消息服务器 v6.0.1.zip

    4. 事务和持久化:ActiveMQ支持事务性消息处理,确保消息的正确性和一致性。同时,它提供多种持久化机制,如文件系统、数据库存储,确保即使在服务中断后也能恢复消息。 5. 安全性:ActiveMQ内置了用户认证和授权...

    基于Springboot+ActiveMQ事务==本地事件表+activemq.zip

    此外,ActiveMQ提供了一些特性来保证消息的可靠性,如持久化存储、预取策略和消息确认机制。持久化存储确保即使服务器宕机,消息也不会丢失;预取策略允许消费者在连接时一次性获取多条消息,提高效率;消息确认机制...

    Spring+ActiveMQ消息队列+前台接收消息

    在IT行业中,消息队列(Message Queue)是一种重要的中间件技术,它允许应用程序之间通过异步通信进行...这种设计模式常用于大型分布式系统,如订单处理、日志收集、任务调度等场景,以提高系统的可靠性和响应速度。

    ActiveMQ队列消息过期时间设置和自动清除解决方案.docx

    ActiveMQ 队列消息过期时间设置和自动清除解决方案 ActiveMQ 是一个开源的消息队列系统,用于实现分布式系统之间的异步通信。在使用 ActiveMQ 时,消息过期时间设置和自动清除是一个非常重要的问题。本文将介绍 ...

    activeMQ收发工具.rar

    8. **事务处理**:学习如何在ActiveMQ中使用JMS事务确保消息的一致性和可靠性。 9. **性能监控**:ActiveMQ提供了一套强大的监控工具,包括Web控制台,可以用来查看消息的发送、接收和堆积情况,帮助优化系统性能。...

    ActiveMQ消息过期时间设置和自动清除解决方案

    为了确保消息处理的高效性,ActiveMQ提供了慢消费者策略来处理那些处理消息速度过慢的消费者。该策略可以通过定期检查所有慢速消费者并在达到一定阈值时中断它们,以提高系统的整体性能。 ##### 配置示例 ```xml ...

    ActiveMQ-P2P文本消息+Spring和ActiveMQ的整合实例源码

    **ActiveMQ 概述** ActiveMQ 是一个开源的消息中间件,它是 Java Message Service(JMS)规范的一个实现,...在实际项目中,根据具体需求,还可以进一步探索 ActiveMQ 的高级特性,如事务消息、持久化、消息优先级等。

    ActiveMQ的队列queue模式(事务、应答、转发模式、阻塞消息)

    在ActiveMQ中,事务提供了消息发送的原子性。通过开启事务,多个消息可以在一个事务中发送,只有当事务提交时,这些消息才会被实际投递到队列。如果事务回滚,所有消息都不会被发送,从而保证了数据的一致性。例如,...

    activemq向android推送消息实例

    为了保证消息推送的可靠性,你可能需要考虑错误处理、重连机制以及在Android应用中管理网络连接状态的变化。此外,还可以探索ActiveMQ的其他特性,如持久化、消息优先级、事务处理等,以满足更复杂的需求。通过深入...

    ActiveMQ 使用Ajax 收发消息实战

    标题中的"ActiveMQ 使用Ajax 收发消息实战"指出我们将探讨如何使用ActiveMQ消息中间件与Ajax技术结合,实现Web应用程序中的异步消息传递。ActiveMQ是Apache软件基金会的一个项目,提供了一个开源的消息代理,支持...

    springboot集成activemq实现消息接收demo

    此外,ActiveMQ支持多种协议和特性,如topic、持久化、事务消息等,可以根据项目需求进一步探索和利用。 这个简单的Demo展示了如何在Spring Boot中集成ActiveMQ进行消息接收。通过这种方式,你可以构建出一个可靠的...

    ActiveMQ消息中间件面试专题1

    通过ActiveMQ,应用程序能够解耦生产者和消费者,实现异步处理和数据传输,以提高系统的整体性能和可靠性。 2. ActiveMQ 服务器宕机怎么办? ActiveMQ 的存储机制包括内存和文件两部分。非持久化消息存储在内存,而...

    activeMQ三种收发消息方式

    在这个小例子中,我们将探讨ActiveMQ的三种主要的消息收发方式:点对点、发布/订阅和事务处理模式。 1. **点对点(Point-to-Point)模式**: 在点对点模式下,消息从一个生产者发送到一个队列,然后由一个或多个...

Global site tag (gtag.js) - Google Analytics