activeMQ异步,订阅模式,如何解决消息丢失和重发

我们现在在做一个商城项目;使用activeMQ完成系统之间的信息同步,实用异步发
送,发布订阅模式,因为异步,所以使用的事listener监听,这样如果我配置消息
持久化,问题如下:
1. consumer返回给broker的ackknowldge是在onmessage方法后,所以不
会存在消息丢失,对吗?
2. 如果consumer在接收到消息但是未给broker应答,consumer宕机了,默认重发
数是6次,如果我consumer一直宕机,broker会在发送第一条发现连接不上的时候停止发送,还是一直发完6次?最后消息又会怎样?
3. 我的消息都比较重要,不允许丢失,要怎么处理?
各位大哥,我已经看各种博文两天两夜了,实在理解总结不了,请帮忙解惑,不要丢给我一堆连接叫我看,谢谢!

0

1个回答

1、返回的ackknowldge 取决于服务器session的设置。默认是Session.AUTO_ACKNOWLEDGE,客户端recevie()后者onMessage之后签收,还有Session.CLIENT_ACKNOWLEDGE ,客户端主动调用acknowledge 方法签收消息,第三种是Session.DUPS_OK_ACKNOWLEDGE 此选项指示 Session 不必确保对传送消息的签收.
2、因为设置是持久化,会发完6次,如果服务器并收到ackknowldge,则停止发送,并保存在存储区,当有新的consumer连接上时重新发送这条消息。
3、这个情况比较多,理论来说使用topic 加持久化可保证服务器消息可靠,客户端使用Producer.DeliveryMode = MsgDeliveryMode.Persistent,来保证客户端消息持久化。但是不能避免重复消息的问题,据说这个插件可以解决http://camel.apache.org/idempotent-consumer.html。。嗯差不多了吧,但是这个插件我也没用过,抱歉

4
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ActiveMQ 处理失败时的消息重发机制
1. 处理失败 指的是MessageListener的onMessage方法里抛出RuntimeException。 2. Message头里有两个相关字段:Redelivered默认为false,redeliveryCounter默认为0。 3. 消息先由broker发送给consumer,consumer调用listener,如果处理失败,本地redeliveryCounter++,给
activeMQ消息阻塞 丢失 假死--架构
jms有三部分组成。生产者,中间件(broker),消费者 , 生产者,中间件(broker),消费者  JMSDeliveryMode  NON_PERSISTENT 非持久化 表示消息发往JMS消息服务器之后,保存在内存中,不做持久化;  PERSISTENT 持久化 消息发往JMS消息服务器之后,持久化数据。以保证消息服务器拓机造成的消息丢失。 ======
ActiveMQ处理失败时的消息重发机制
ActiveMQ处理失败时的消息重发机制1. 处理失败 指的是MessageListener的onMessage方法里抛出RuntimeException。2. Message头里有两个相关字段:Redelivered默认为false,redeliveryCounter默认为0。3. 消息先由broker发送给consumer,consumer调用listener,如果处理失败,本地redeliv...
消息队列 折腾ActiveMQ时遇到的问题和解决方法 消息丢失怎么办
折腾ActiveMQ时遇到的问题和解决方法:   1.先讲严重的:服务挂掉。 这得从ActiveMQ的储存机制说起。在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的,它们的最大限制在配置文件的<systemUsage>节点中配置。但是,在非持久化消息堆积到一定程度,内存告急的时候,ActiveMQ会将内存中的非持久化消息写入临时文件中,以腾出内存。虽然都保...
activemq的重发策略参数配置
activemq为保证消息的可靠性,引入重发机制。 触发重发的情况: 1.在使用事务的Session中,调用rollback()方法; 2.在使用事务的Session中,调用commit()方法之前就关闭了Session; 3.在Session中使用CLIENT_ACKNOWLEDGE签收模式或者INDIVIDUAL_ACKNOWLEDGE模式,并且调...
解决RabbitMQ消息丢失与重复消费问题
原文地址:http://blog.csdn.net/yeweiouyang/article/details/74943278本文仅记录排查和问题定位、解决的过程。1. 背景最近用户反馈提交的SQL查询一直处于长时间等待状态,经过排查观察,发现部分查询请求丢失,导致用户提交的查询未被正常接收,继而长时间无响应。现象:集市SQL控制台提交10个简单SQL查询 -> 消息发送方:发送10条消息至消...
Spring ActiveMQ消息重发机制
《重发机制的实现》 <bean id="activeMQRedeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy"> <!--是否在每次尝试重新发送失败后,增长这个等待时间 --> <property name="useExponentialBackOff" value="true"&
spring整合ActiveMQ订阅模式(对象消息发送)
归纳一下spring整合activemq的基础配置以及使用,监听到消息后的更多逻辑操作需要自己完成,需要源代码可联系:993610778
activemq中的订阅模式以及消息时长和确认机制
直接上代码 发布主题 package com.activemq; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; public class TopicPub { public static void main(String[] args) throws JMSException {
activemq 消息消费失败之后如何重新消费
在不开启事物的情况下 采用的是应答模式4(ActiveMQSession.AUTO_ACKNOWLEDGE)消费一次 应答一次 这时候消费失败了,由于没有配置死亡队列,消息就不会被消费堆积在队列中,那么怎么才可以让消息再被消费呢? 由于项目中的应用场景,有个方案启动和停止的功能,项目启动启动监听,项目停止,停止监听 具体实现代码如下 public class MqService { p
springboot整合activemq,应答模式,消息重发机制,消息持久化
准备工作: activemq的消息确认机制就是文档中说的ack机制有: AUTO_ACKNOWLEDGE = 1    自动确认 CLIENT_ACKNOWLEDGE = 2    客户端手动确认    DUPS_OK_ACKNOWLEDGE = 3    自动批量确认 SESSION_TRANSACTED = 0    事务提交并确认 INDIVIDUAL_ACKNOWLEDG
[问题记录]解决RabbitMQ消息丢失与重复消费问题
本文仅记录排查和问题定位、解决的过程
activemq订阅模式以及消息时长和确认机制
代码如下: [java] view plain copy   package com.activemq;   import org.apache.activemq.ActiveMQConnectionFactory;   import javax.jms.*;       public class TopicPub {        pu
WLS_042:常见故障之十:JMS Queue中的消息被“重复消费”问题
声明:该博文转自http://maping930883.blogspot.com,热爱java,热爱生活 正常情况下,Sender把消息发送到Queue以后,Receiver成功读取之后,Queue中的消息应该不存在了。 但有时,我们会发现消息依然在Queue中存在,这是怎么回事呢? 既然Sender已经把消息发送到Queue中了,表明事务已经成功完成了。因此,问题应该出现在Receiv...
SpringBoot整合ActiveMQ消息队列和双向队列、点对点与发布订阅
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。  1.添加SpringBoot集成ActiveMQ所需依赖  <!-- activeMQ--> <dep...
ActiveMQ中的消息的持久化和非持久化 以及 持久订阅者 和 非持久订阅者之间的区别与联系
①DeliveryMode 这是传输模式。ActiveMQ支持两种传输模式:持久传输和非持久传输(persistent and non-persistent delivery),默认情况下使用的是持久传输。 可以通过MessageProducer 类的 setDeliveryMode方法设置传输模式: MessageProducer producer = ...; produce
[异步][jms][activeMq]如何做到重试机制不会导致一条消息被多次执行.
Message Queue ActiveMQ: redeliver,如何做到重试机制不会导致一条消息被多次执行.        http://stackoverflow.com/questions/4934386/avoiding-duplicated-messages-on-jms-activemq 这里面提到了两个. 一个是可集成到Mq的camel的组件 Idempotent Consum
ActiveMQ(三):ActiveMQ的安全机制、api及订阅模式demo
一、ActiveMQ安全机制ActiveMQ是使用jetty部署的,修改密码需要到相应的配置文件 配置文件是这个:在其第123行添加用户名和密码,添加配置如下: <plugins> <simpleAuthenticationPlugin> <users> <authenticationUser u
ActiveMQ和spring整合,订阅主题和消息消费
本文章适用初学ActiveMQ的统同学。 本演示为windows下进行 首先下载ActiveMQ 1.ActiveMQ地址     ActiveMQ官方网站:http://activemq.apache.org/  2.下载完成或解压到本地F:/目录下 3.启动本地ActiveMQ服务。   进入到安装目录双击activemq.bat文件启动,如果启动时窗口一闪而
SpringBoot+ActiveMq实现订阅模式(Topic)消息队列
上文已经详细介绍了点对点模式(Queue)下的消息队列,今天就来再介绍一下消息队列的另一种模式:订阅模式。 一、订阅模式的流程 生产者产生一条消息message放入一个topic中,该topic已经三个消费者订阅了,那么被放入topic中的这条消息,就会同时被这三个消费者取走(当然他们必须都处于在线状态),并进行“消费”。其实就类似现实生活中的手机接收推送。 二、订阅模式的应用场景 ...
activeMQ消息详解(续) 订阅(主题)消息(消息持久化)
activeMQ 持久化消息 订阅消息
ActiveMQ 重发机制与确认机制 实践
https://www.cnblogs.com/sjshare/p/8962340.html
kafka:如何保证消息不丢失不重复
  首先要考虑这么几个问题: 消息丢失是什么造成的?(从生产端和消费端两个角度来考虑) 消息重复是什么造成的?(从生产端和消费端两个角度来考虑) 如何保证消息有序? 如果保证消息不重不漏,损失的是什么?   下面是文章详情,这里先简单总结一下: 消费端重复消费:很容易解决,建立去重表。 消费端丢失数据:也容易解决,关闭自动提交of...
Spring+ActiveMQ消息持久化,Topic持久化订阅
消息持久化就是将消息保存到磁盘,这样的好处就是如果服务挂了,则消息还保存在磁盘不会丢失,服务起来后还能找到消息并在此发送,消息的持久化和消息的发送模型是没有关系的。 消息持久化的配置很方便的,所以其他的那些就不写出来了,可以看看上一篇文章中的同步异步实现方式。这里只把持久化配置的列出来。 [html] view plain copy  print?
ActiveMQ发布-订阅消息模式(同点对点模式的区别)
1、消息生产者-消息发布-Topic [html] view plain copy /**   * 消息生产者-消息发布者   * @author Administrator   *   */  public class JMSProducer {      private static final String USERNAME=ActiveMQConnection
activemq持久订阅工作原理
对activemq消息订阅模式来说有两种:持久订阅/非持久订阅。 非持久订阅consumer只能消费在该consumer激活状态时传送给对应topic的消息才能被该consumer消费,一旦该consumer 挂掉到下次启动期间发布到该topic的消息不能被该consumer重新恢复时使用!!! 持久订阅:订阅之后,无论消息是否是在该consumer激活或者down掉期间发送的,最终都会被该c...
springboot activemq 2 持久化消息 与 持久化订阅
接着上一节http://blog.csdn.net/cons_step_by_step/article/details/78300427。 改动1.减少springboot重复创建session的问题 jmsTemplate的地方加入了CachingConnectionFactory,这样配置可以 @Bean(name = "myJmsTemplate") public JmsTem
MQ解决消息重发--做到幂等性
一、MQ消息发送            1、发送端MQ-client(消息生产者:Producer)将消息发送给MQ-server;   2、MQ-server将消息落地;   3、MQ-server回ACK给MQ-client(Producer);   4、MQ-server将消息发送给消息接受端MQ-client(消息消费者:Customer);   5、MQ-client(Cus...
ActiveMQ订阅模式持久化实现
我的诉求是,建一个订阅通道,然后多个客户端监听,当某个客户端掉线后,再上线的时候可以收到它没有接收到的消息。 本文主要参考了《使用Spring配置ActiveMQ的发布订阅模式》(http://nettm.iteye.com/blog/1828268),将他们复制粘贴过来,基本上就ok了。 在找到这篇文章前,《如何实现ActiveMq的Topic的持久订阅》(http://www.my
ActiveMQ消息传送和确认机制
我的头条号:https://www.toutiao.com/c/user/54449368910/#mid=1591720133858307ActiveMQ消息传送机制:Producer客户端使用来发送消息的, Consumer客户端用来消费消息; 它们的协同中心就是ActiveMQ broker,broker也是让producer和consumer调用过程解耦的工具,最终实现了异步RPC/数据交...
ActiveMQ之发布- 订阅消息模式实现
一、概念 发布者/订阅者模型支持向一个特定的消息主题发布消息。0或多个订阅者可能对接收来自特定消息主题的消息感兴趣。在这种模型下,发布者和订阅者彼此不知道对方。这种模式好比是匿名公告板。这种模式被概括为:多个消费者可以获得消息 在发布者和订阅者之间存在时间依赖性。发布者需要建立一个订阅(subscription),以便客户能够订阅。订阅者必须保持持续的活动状态以接收消息,除
ActiveMQ的发布订阅模式
1、ActivaMQ的发布订阅模式的简介       发布订阅模式有点类似于我们日常生活中订阅报纸。每年到年尾的时候,邮局就会发一本报纸集合让我们来选择订阅哪一个。在这个表里头列了所有出版发行的报纸,那么对于我们每一个订阅者来说,我们可以选择一份或者多份报纸。比如北京日报、潇湘晨报等。那么这些个我们订阅的报纸,就相当于发布订阅模式里的topic。有很多个人订阅报纸,也有人可能和我订阅了相同的报纸
ActiveMQ 发布- 订阅消息模式实现
1、消息生产者-消息发布者 /** * 消息生产者 * @author Administrator * */ public class JMSProducer { private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名 private static final St...
ActiveMQ的使用与遇到的相关坑(点对点,发布与订阅,resreq)
1、介绍 ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。 MQ可以是不同应用之间进行沟通的桥梁, 支持多种语言和协议编写客户端,如: Java,C,C++,C#,Ruby,
active mq 多个消费者实战(发布订阅模式)
注意:所有的配置文件都在src文件下            声明:  在这里不讲activemq 是什么,本人只是根据平时用到的东西整理一下希望对大家有所帮助。         首先是生产者的配置文件 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springfra
ActiveMQ 2 订阅者模式实现
一个发布者对多个订阅者的消息传递 Topic和queue的最大区别在于topic是以广播的形式,通知所有在线监听的客户端有新的消息,没有监听的客户端将收不到消息;而queue则是以点对点的形式通知多个处于监听状态的客户端中的一个。 首先我们如第一章类似,为订阅者1,2分别创建两个监听器MyMessageListener,MyMessageListener2 实现Mess
如何保证消息队列里面的消息不发生丢失情况
待分析
初入activeMQ,spring+activeMQ的整合实现发布订阅
*spring+activeMQ整合一直想写博客,技术用的都太多,但是都不久,总是忘记,老大让搞老项目,今天自己在公司搞了MQ,记录一下:介绍就不需要了,网上一大堆,我喜欢直接上干货,直接撸,看起来也爽。 spring的原理就不用说了,首先spring里面配置能够扫描到这个xml我的xml命名为applicationContext-activemq-container.xml 需要spring加载
ActiveMQ Topic消息失败重发
       消息失败重发指的是当消息的接收方没有成功的消费消息,我们需要重发消息,让消息的接收方成功消费这个消息,保证事务的完整性和消息的一致性。 一、JMS消息确认机制     在session接口中定义的几个常量:    AUTO_ACKNOWLEDGE =  1    自动确认   CLIENT_ACKNOWEDGE =  2    客户端手动确认   DUPS_OK_ACKNO...
spring activeMQ 整合(二): 重发机制(消息发送失败后的重新发送)
之前已经写了一个spring   activemq整合的demo   ,今天继续完善一下这个demo,让功能更强大。 Spring ActiveMQ 整合(一): 一个简单的demo,测试消息的发送与接收            假如现在我手里有一个很重要的消息的,想要发给一个人,但是很不幸,消息发送失败了。这时候怎么办呢怎么解决这种尴尬的情况,这时候我们可以利用activeMQ的 
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链解决 人工智能解决夜班