spring+activemq消息总是离奇被消费

我的activemq配置的是queue模式的,配置了一个listener来自动消费消息,可是当配置了第二个Destination时,监听就无法接收到消息了,我查看了下,每次发消息的同时消息就被消费掉了,没有待消费消息,所以监听不能运行,但是连续发送几条,会有几率其中的一条被监听消费。后来我把监听注释掉测试,按理说没有人来消费他,发送到队列里的消息是不会被消费的,可是奇怪了,每次发送消息的同时消息就被消费了。一个人研究了好几天没研究出来个所以然。希望哪位大佬能指点一二,不吝赐教,小弟感激不尽。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
activemq消费者消息预取和消息消费确认
消费者可以通过设置prefetchSize进行批量取消息,有默认值。可以设置: 1、 tcp://localhost:61616?jms.prefetchPolicy.all=50 2、 tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=1 3、 queue = new ActiveMQQueue(“TEST.QUEUE?co...
ActiveMQ和spring整合,订阅主题和消息消费
本文章适用初学ActiveMQ的统同学。 本演示为windows下进行 首先下载ActiveMQ 1.ActiveMQ地址     ActiveMQ官方网站:http://activemq.apache.org/  2.下载完成或解压到本地F:/目录下 3.启动本地ActiveMQ服务。   进入到安装目录双击activemq.bat文件启动,如果启动时窗口一闪而
spring JMS、activemq中消费者收不到生产者发送的消息的原因解析
我们使用jms一般是使用spring-jms和activemq相结合,通过spring的JmsTemplate发送消息到指定的Destination。       首先定义一个activemq的连接池:   Xml代码   <bean id="connectionFactory" class="org.apache.activemq.pool.PooledConn...
spring JMS、activemq中消费者收不到生产者发送的消息的原因解析
我们使用jms一般是使用spring-jms和activemq相结合,通过spring的JmsTemplate发送消息到指定的Destination。       首先定义一个activemq的连接池:   Xml代码   bean id="connectionFactory" class="org.apache.activemq.pool.PooledC
Activemq消息离奇被消费
当queue模式下,你发送了消息的同时就被消费了,你这里没有监听,没有拉取消息,那么,肯定是被别人的监听消费了。为什么呢?因为这种情况一般都是一个消息服务,好多人共同开发一个项目,每个人的电脑上的项目都可能消费这个消息服务里的消息。 发现的办法,给消息换个类型,别人那边报错了,说明他消费了,因为类型不对,所以报错了。
activemq 消息消费失败之后如何重新消费
在不开启事物的情况下 采用的是应答模式4(ActiveMQSession.AUTO_ACKNOWLEDGE)消费一次 应答一次 这时候消费失败了,由于没有配置死亡队列,消息就不会被消费堆积在队列中,那么怎么才可以让消息再被消费呢? 由于项目中的应用场景,有个方案启动和停止的功能,项目启动启动监听,项目停止,停止监听 具体实现代码如下 public class MqService { p
activeMQ数据消费了,但是在中间站却没有删除数据的原因
connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); 第一个参数当改
ActiveMQ多个消费者监听一个列队,最后是谁消费了?
看过消息队列资料的同学应该在网上都看到过这段代码: //创建一个Queue Queue queue = new ActiveMQQueue("testQueue"); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //注册消费者1 MessageCon
ActiveMQ:点对点队列消费者接收不到消息
一.环境说明 Windows 1709 阿里云ECS CentOS 7.4 ActiveMQ 5.15.2 JDK 1.8 IDEA 2017.3 Maven 3.5.0 二.问题说明远程消息服务器使用的是阿里云ECS,在windows上编写测试类测试消息队列的点对点的通信,却发现,无法消费生产者生产的消息,即接收不到消息.三.代码testProducer @Test public v
WLS_042:常见故障之十:JMS Queue中的消息被“重复消费”问题
声明:该博文转自http://maping930883.blogspot.com,热爱java,热爱生活 正常情况下,Sender把消息发送到Queue以后,Receiver成功读取之后,Queue中的消息应该不存在了。 但有时,我们会发现消息依然在Queue中存在,这是怎么回事呢? 既然Sender已经把消息发送到Queue中了,表明事务已经成功完成了。因此,问题应该出现在Receiv...
activeMQ消费消息时网络流量异常大的问题 .
公司有一个应用,多个线程从activeMQ中取消息,随着业务的扩大,该机器占用的网络带宽越来越高。 仔细分析发现,mq入队时并没有异常高的网络流量,仅仅在出队时会产生很高的网络流量。 最终发现是spring的jmsTemplate与activemq的prefetch机制配合导致的问题。 研究源码发现jmsTemplate实现机制是:每次调用receive()时都会创建一个新的co
activemq中的消费者生成及消息处理
增加一个消息消费者 在transportConnection中注册了一个消息监听器DefaultTransportListener 当客户端有动作的的时候,通过消息监听器的oncommand进行处理。 当有一个消费者进入,则调用该类中的processAddConsumer 方法。具体调用流程如下:   消息到达服务器端之后,会被Subscriptio
Spring-boot中简单操作activemq(生产者消费者代码)
pom.xml添加依赖: <!-- activemq --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency&gt
active mq 多个消费者实战(发布订阅模式)
注意:所有的配置文件都在src文件下            声明:  在这里不讲activemq 是什么,本人只是根据平时用到的东西整理一下希望对大家有所帮助。         首先是生产者的配置文件 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springfra
ActiveMQ利用selector消费在消息堆积量大的时候不起作用的解决
ActiveMQ利用selector消费在消息堆积量大的时候不起作用的解决 现象: ​ 我们在使用activemq queue的时候,发送方会把两个城市的消息都发到一个queue里,但是会在消息扩展属性里加上代表不同城市的参数,然后两个城市的应用都会启带不同selector的消费者到queue里消费各自的消息。前几天A市的服务挂了,开始B市的服务还能正常的消费消息,当随着queue里消息堆积的越来...
ActiveMQ中消费者是如何接收消息的
一、 http://blog.csdn.net/manzhizhen/article/details/52606716 二、 http://blog.csdn.net/manzhizhen/article/details/52606717
spring2.0.8和activemq5.2 topic方式,消息被重复消费的问题找到原因
找了好几个月,终于找到了问题的所在。 因为以前在后台的java类中重复加载了spring配置文件,导致topic的消费者被重复增加,所以一个消息被消费了两次。   package com.work.core.spring; import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest; i...
activemq预取与消息确认优化
prefecthSize 消费端预取消息数量,每次消费者获取到到消息数量小于等于prefecthSize,例如prefecthSize是10,每次消费者从broker拉取10条消息到本地内存。 在activemq中设置prefectSize如下。 Destination destination=session.createQueue(&amp;quot;gqueue?consumer.prefetchSize...
消息中间件面试题:如何保证消息不被重复消费
面试题 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 面试题剖析 回答这个问题,首先你别听到重复消息这个事儿,就一无所知吧,你先大概说一说可能会有哪些重复消费的问题。 首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。挑一个 Kafka 来举个例子,说说怎么重复消费吧。 K...
activemq 应答ack机制与消费消息过程分析
主要关注有以下两点: 如何获取消息? 消息如何应答? 首先是一个简单的总结图,这个图是根据源码得出的。 ActiveMQMessageConsumer.receive 这个方法是同步阻塞获取消息的方法,尝试从源码分析其工作原理。 @Override public Message receive() throws JMSException { //检查连接 ...
[异步][jms][activeMq]如何做到重试机制不会导致一条消息被多次执行.
Message Queue ActiveMQ: redeliver,如何做到重试机制不会导致一条消息被多次执行.        http://stackoverflow.com/questions/4934386/avoiding-duplicated-messages-on-jms-activemq 这里面提到了两个. 一个是可集成到Mq的camel的组件 Idempotent Consum
MQ的概念及用ActiveMQ实现一个生产者多个消费者共享消息队列
MQ的优点及使用场景: 消息总线(Message Queue),后文称MQ,是一种跨进程的通信机制,用于上下游传递消息。 在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。 使用了MQ之后,消息发送上游只需要依赖MQ,逻辑上和物理上都不用依赖其他服务。 什么时候不使用消息总线? 既然MQ是互联网分层架构中的解耦利器,那所有通讯都使用MQ岂不是很好?这是一...
java代码主动消费消息ActiveMQ消息{StringMessage}
直接上代码: import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.Session; impor
Spring与ActiveMQ整合(多线程并发发送与接收消息)
本文博客介绍生产者和消费者方都使用多线程技术并发发送和接收消息。
activemq消息的产生与消费 Java
activemq:进入bin目录启动,localhost:8161访问activemq客户端 1.发送消息给activemq客户端: String url = &quot;tcp://ip地址:61616&quot;; String user = ActiveMQConnection.DEFAULT_USER; //默认用户名admin String password = Activ...
ActiveMQ消费重试机制
处理失败时的消息重发机制1. 处理失败 指的是MessageListener的onMessage方法里抛出RuntimeException。2. Message头里有两个相关字段:Redelivered默认为false,redeliveryCounter默认为0。3. 消息先由broker发送给consumer,consumer调用listener,如果处理失败,本地redeliveryCount
Spring整合ActiveMQ实现多个消费者配置(Queue与Topic模式)
需要依赖的jar包,包括但不限于&amp;lt;!-- spring核心包 --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-core&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;
解决activemq多消费者并发处理
遇到一个现象,如果activemq队列积压了数据的话,如果在spring中启动listner,只有一个consumer执行,查阅了很多资料,无果,后来偶尔通过activemq的监控网页看到消费者列表中,只有一个消费者有等待处理的数据,其他都没有,如下图: 由此得知,activemq有一定机制将队列中的数据交给consumer处理,这个机制就是数据的数量分配,查资料得知,默认是1000
Spring + ActiveMQ 死信队列(重发机制)
登录ActiveMQ管理端可以看到ActiveMq有一个默认的死信队:ActiveMQ.DLQ ,若未做设置则处理失败的消息会自动进入此队列。本文将展示如何在Spring中引入私信重发机制。1.ActiveMQ 部署时修改activemq.xml在policyEntries节点中增加如下策略配置。&amp;lt;policyEntry queue=&quot;&amp;gt;&quot;&amp;gt; &amp;lt;deadLetter...
ActiveMQ顺序消费消息+消息分组
简介 Queue中的消息是按照顺序发送给Consumers的。然而,当你有多个Consumer同时从相同的Queue提取消息时,顺序将不能得到保证。因为这些消息时被多个线程并发的处理。但是,有时候保证消息的顺序是很重要的。例如,你可能不希望插入订单操作结束之前执行更新订单的操作。那么我们可以通过Exclusive Consumer和Message Groups来实现这一目的。 独有消费者 从Act...
activemq 事务--遇到异常始终回滚
activemq 事务--遇到异常始终回滚, 1. 启用消息事务 2. 当消息在消费的时候,如果用户程序抛出Exception,则消息会回滚重传(mq里面的未消费消息数目不变),  spring 的activemq默认最多重传6次, 超过6次,即使抛出了异常,这个消费仍然被消费不可回滚。 jms.redeliveryPolicy.maximumRedeliver
ActiveMQ在Spring中异步接收消息(六)
转载请出自出处:http://eksliang.iteye.com/blog/2243158 一、概述      当调用JmsTemplate的receive()方法时,JmsTemplate会尝试从ActiveMQ中获取一个消息。如果没有可用的消息,receive()方法会一直等待,直到获得消息为止。也就是说该方法时同步的。这意味着接收者必须耐心等待消息的到来,因此receive()...
spring 实现activemq延时投递
在开发业务系统时,某些业务场景需要消息定时发送或延时发送(类似:飞信的短信定时发送需求),这时候就需要用到activemq的消息延时投递,详细的文档可参考官网说明,本文只介绍二种常用的用法: 注:本文采用spring的JmsTemplate来发送消息 步骤1、首先要修改activemq.xml配置文件,启用延时投递(注:schedulerSupport="true" 的位置要在最外面,否则
Activemq消息确认机制
ActiveMQ消息传送机制以及ACK机制详解     AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。   一. ActiveMQ消息传送机制     Producer客户端使用来发送消息的, Consumer客户端用来消费消息;它们的协同
ActiveMQ多个消费者消费不均匀问题
先上图 如果客户端处理很慢的话,Broker会在之前发送消息的反馈之前,继续发送新的消息到客户端。如果客户端依旧很慢的话,没有得到确认反馈的消息会持续增长。在这种情况下,Broker有可能会停止发送消息给消费者。当未被反馈的消息达到了prefetch limit设置的数字时,Broker将会停止给消费者发送新的消息。除非消费者开始给与反馈,否则得不到任何消息。 Defa
Spring整合activemq,实现单消费者消费
1.ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线,实现了JMS(Java MessageService,实际上是指JMS API)可用来实现基于消息的RPC(过程远程调用) 对于Spring和Java程序员来说不一定要实现JMS,还有另外一种可选方案—AMQP(advanced message queuing protocol),即高级队列消息协议 下面将介绍的是
ActiveMQ高级特性:虚拟Destinations实现消费者分组
虚拟Destinations可以看做对简单的topic和queue用法的补充,基于它们可以实现一些简单有用的EIP功能,虚拟主题类似于1对多的分支功能+消费端的cluster+failover虚拟主题(Virtual Topics)ActiveMQ中,topic只有在持久订阅(durablesubscription)下是持久化的。存在持久订阅时,每个持久订阅者,都相当于一个持久化的queue的客户
spring结合activemq消息过期配置
包括queue和topic的消息过期配置。发送消息使用的spring-jms提供的JmsTemplate。 queue的配置 设置pubSubDomain为false,默认即为false。需要将explicitQosEnabled设置为true,过期时间要生效依赖它。timeToLive即为过期时间,本例中设置的是10秒过期。 topic的配置 设置pubSubDomain为true,表示...
ActiveMQ的消息接收确认
JMS消息只有在被确认之后,才认为已经被成功地消费了。消息的成功消费通常包含三个阶段:客户接收消息、客户处理消息和消息被确认。 在事务性会话中,当一个事务被提交的时候,确认自动发生。在非事务性会话中,消息合适被确认取决于创建会话时的应答模式(acknowledgement mode)。该参数有以下三个可选值: Session.AUTO_ACKNOWLEDGE:当客户成功地从receive方法返
SpringBoot--JMS(ActiveMQ)异步消息服务
目录结构:pom.xml文件:&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://maven
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 消费区块链 微信消息接口开发视频