ActiveMQ 有时候接收不到消息 10C

使用ActiveMQ做个小例子的时候, 有时候消息接收不到,有时候可以,没有被消费的消息,再重启后又能全部接收到,不知道问题出在哪。谢谢各位大神指点
Spring ActiveMQ 配置如下

 package com.zym.robot.config;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.jms.connection.CachingConnectionFactory;

import com.zym.robot.constant.Constant;

@Configuration
@Lazy(false)
public class ConnectionFactoryConfig{

    @Autowired
    private ApplicationUtil applicationUtil;

    @Bean(name="activeMQConnectionFactory")
    public ActiveMQConnectionFactory activeMQConnectionFactory(){
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
        activeMQConnectionFactory.setBrokerURL(Constant.activemq_brokerurl);
        activeMQConnectionFactory.setUserName(Constant.activemq_username);
        activeMQConnectionFactory.setPassword(Constant.activemq_password);
        activeMQConnectionFactory.setTrustAllPackages(true);
        return activeMQConnectionFactory;
    }

    @Bean(name="connectionFactory")
    public CachingConnectionFactory connectionFactory(){
        CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
        cachingConnectionFactory.setTargetConnectionFactory((ActiveMQConnectionFactory)applicationUtil.getBean("activeMQConnectionFactory"));
        cachingConnectionFactory.setSessionCacheSize(10);
        return cachingConnectionFactory;
    }

}


 package com.zym.robot.config;

import javax.jms.Destination;

import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Lazy;
import org.springframework.jms.connection.CachingConnectionFactory;
import org.springframework.jms.core.JmsTemplate;

@Configuration
@Import(ConnectionFactoryConfig.class)
@Lazy(false)
public class MQTemplateFactory {

    @Autowired
    @Qualifier("connectionFactory")
    private CachingConnectionFactory connectionFactory;

    @Autowired
    private ApplicationUtil applicationUtil;

    /**
     * @author ZhaoYM
     * @description 微信消息队列
     * @return
     */
    @Bean(name="messageQueueTemplate")
    public JmsTemplate messageQueueTemplate(){
        JmsTemplate template = new JmsTemplate();
        template.setPubSubNoLocal(false);
        template.setConnectionFactory(connectionFactory);
        template.setDefaultDestination((ActiveMQQueue)applicationUtil.getBean("messageQueue"));
        return template;
    }

    /**
     * @author ZhaoYM
     * @description 登录消息队列
     * @return
     */
    @Bean(name="loginQueueTemplate")
    public JmsTemplate loginQueueTemplate(){
        JmsTemplate template = new JmsTemplate();
        template.setPubSubNoLocal(false);
        template.setConnectionFactory(connectionFactory);
        template.setDefaultDestination((ActiveMQQueue)applicationUtil.getBean("loginQueue"));
        return template;
    }

    @Bean(name="messageQueue")
    public Destination messageQueue(){
        ActiveMQQueue activeMQQueue = new ActiveMQQueue();
        activeMQQueue.setPhysicalName("messageQueue");
        return activeMQQueue;
    }

    @Bean(name="loginQueue")
    public Destination loginQueue(){
        ActiveMQQueue activeMQQueue = new ActiveMQQueue();
        activeMQQueue.setPhysicalName("loginQueue");
        return activeMQQueue;
    }


}

发送消息代码

 package com.zym.robot.activemq;

import java.io.Serializable;

import org.springframework.jms.core.JmsTemplate;

public class SendMessage {


    /**
     * @author ZhaoYM
     * @description 发送消息
     * @param object
     * @param jmsTemplate
     */
    public static void sendMessage(Serializable object, JmsTemplate jmsTemplate){
        SimpleMessageCreatorImpl messageCreator = new SimpleMessageCreatorImpl();
        messageCreator.setMessage(object);
        jmsTemplate.send(messageCreator);
    }

}

package com.zym.robot.activemq;

import java.io.Serializable;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;

import org.springframework.jms.core.MessageCreator;

/**
 * @author ZhaoYM
 *  @description message 简单实现
 */
public class SimpleMessageCreatorImpl implements MessageCreator{

    private Serializable message;

    public Serializable getMessage() {
        return message;
    }

    public void setMessage(Serializable message) {
        this.message = message;
    }

    @Override
    public Message createMessage(Session session) throws JMSException {
        if (message == null) {
            return session.createTextMessage("默认消息");
        }else {
            return session.createObjectMessage(getMessage());
        }
    }

}

[图片说明

0

2个回答

0
u010035762
菩提无悔 回复ZhaoYM_jz: 请问您是怎么解决的?
4 个月之前 回复
MapleStory11
MapleStory11 回复ZhaoYM_jz: 解决了嘛
5 个月之前 回复
qq_16032831
ZhaoYM_jz 谢了,我这个是本地的服务,并且是第一次能收到。最近发现会出现多个消费者,我正在看看是不是这个问题
大约 2 年之前 回复

把发消息和收消息放到两个进程启动,对于新手建议用onmessage代替receive

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
activemq中多个consumer引起接收不到信息
使用activemq时,若一个mq有两个comsumer时,会有接收不到信息的情况
spring JMS、activemq中消费者收不到生产者发送的消息的原因解析
我们使用jms一般是使用spring-jms和activemq相结合,通过spring的JmsTemplate发送消息到指定的Destination。rn rn    首先定义一个activemq的连接池:rn rnrnrnnXml代码  nrnrnn<bean id="connectionFactory" class="org.apache.activemq.pool.PooledConn...
ActiveMQ:点对点队列消费者接收不到消息
一.环境说明nWindows 1709n阿里云ECS nCentOS 7.4nActiveMQ 5.15.2nJDK 1.8nIDEA 2017.3nMaven 3.5.0 n二.问题说明远程消息服务器使用的是阿里云ECS,在windows上编写测试类测试消息队列的点对点的通信,却发现,无法消费生产者生产的消息,即接收不到消息.三.代码testProducer @Testn public v
ActiveMQ——2.消息的接收方式以及选择器
消息的接收方式nnn概述nn消息有两种接收方式:同步接收和异步接收。nn同步接收:主线程阻塞式等待下一个消息的到来,可以设置timeout,超时则返回null。n异步接收:主线程设置MessageListener,然后继续做自己的事,子线程负责监听。nnnn同步接收又称为阻塞式接收;异步接收又称为事件驱动的接收。nnnnAPInnn同步接收,是在获取Messa
activemq发送消息接收不到问题排查
昨天,在公司开发环境上尝试数据同步,涉及到两个服务,服务A发布主题,服务B监听消息,然后同步A表中的数据到B表;nn由服务A通过activemq发布消息到一个topic:VirtualTopic.topic,发现服务A日志上显示发送消息成功,VirtualTopic.topic对应的Messages Enqueued数目增加了2,表明topic上也产生了相应数目消息队列;但是服务B日志上迟迟没有打...
springboot中简单的接收和发送activeMQ消息
ActiveMQ——activemq的详细说明,queue、topic的区别(精选):https://www.cnblogs.com/lemon-flm/p/7676047.htmlnn配置文件:nnnspring:n activemq:n user: adminn password: adminn broker-url: tcp://xx.xx.xxx.xx:61616n ...
突然不发消息给ActiveMQ但能接收
n        今天项目在联调过程中,ActiveMQ突然不好使了。在此之前一月内,项目组的人都没有去修改、重启过MQ服务。rn        虽然现在知道是由于权限的问题导致只能收不能发(站在ActiveMQ角度是收不到,但可以发)。只是到现在还不知道原来没变过的代码,怎么以前可以用,现在却不行了???rn       通过查询示例代码,发现有connectionFactory.setUser...
ActiveMQ发送与接收消息
rnpackage com.yl.common.activemq;rnrnimport javax.jms.Connection;rnimport javax.jms.DeliveryMode;rnimport javax.jms.Destination;rnimport javax.jms.Message;rnimport javax.jms.MessageConsumer;rnimport j...
利用ActiveMQ使用mqttv3发消息Android接收消息
在Linux服务器端安装好并启动ActiveMQ后使用一、发送消息public interface PushCallBack {n int saveOnDone(boolean isOk);n}nimport org.eclipse.paho.client.mqttv3.*;nimport org.eclipse.paho.client.mqttv3.persist.MqttDefaultFi
淘淘商城系列——ActiveMQ发送topic消息和接收topic消息
我相信大家通过前面的学习,已然知道了如何发送队列消息及消费队列消息。本文我们将一起学习如何发送topic消息和接收topic消息。 n我们依然在TestActiceMQ单元测试类中添加一个测试方法,用来测试发送topic消息,如下图所示,其实这个方法与发送队列消息几乎一样,只是创建Destination对象的时候不一样而已。 n n为了方便大家复制,现将testTopicProducer测试方法的代
activemq broker topic消息收发处理过程
首先看一下activemq的网络模型(获取自网络)。 n n可以看到,TcpTransportServer是一个监听网络的类,如果有socket连接,便会放入阻塞队列,然后创建一个TransportConnection类,该类接收socket的消息,进行逻辑处理;nn先看看TransportConnector在干啥 n n第一步:设置server处理类 n第二步:接收到连接socket加入线程池 ...
activemq 通过ajax发送接收消息简单例子
activemq 通过ajax发送接收消息简单例子
ActiveMQ Topic消息失败重发
       消息失败重发指的是当消息的接收方没有成功的消费消息,我们需要重发消息,让消息的接收方成功消费这个消息,保证事务的完整性和消息的一致性。nn一、JMS消息确认机制nn    在session接口中定义的几个常量:nn   AUTO_ACKNOWLEDGE =  1    自动确认nn  CLIENT_ACKNOWEDGE =  2    客户端手动确认nn  DUPS_OK_ACKNO...
ActiveMQ暂停接收消息与恢复接收消息
目录nn nn●问题起因nn●解决方案nn●测试结果nn●问题起因nn使用ActiveMQ的过程中,有这么一个很常见的需求:如果我的消息消费者压力过大,接收消息来不及处理,我想暂停接收消息,先处理完已接收到的消息后,再恢复继续接收新的消息。nn比较诡异的是,这样一个看似简单的功能,百度上居然没有一个适用的方案,大家不信的话可以搜索试试:nnnn第一篇文章看似OK,但是点进去你会发现他的实现方式依旧...
activemq消息发送和监听
项目使用springboot2.0.4搭建,一个父项目包含两个子项目:发送服务;监听服务;消息服务使用ActiveMQ 5.14.3,在docker中运行。 项目中有两种协议消息:activemq和mqtt。
activemq 通过ajax发送接收消息
n本文以最新版activemq5.8为例,参考http://activemq.apache.org/ajax.html官网ajax使用例子,作了网页版的聊天室例子。rn rnActiveMQ支持Ajax,这意味着你可以利用ActiveMQ的“发布/订阅”的特性,来创建高度实时的web应用。rnAjax允许浏览器网页客户端通过互联网收发信息。ActiveMQ对Ajax的支持建立在与REST的Acti...
ActiveMQ中消费者是如何接收消息的(一)
rn       事先说明,本博客关于ActiveMQ的文章都是基于ActiveMQ5.10版本。        初步用过ActiveMQ但又没去研究过源码的朋友肯定有些好奇ActiveMQ中消费者是如何接收消息的呢?本文我就和大家一起从源码角度来初步探讨消费者接收消息的过程。        我们知道,消息传送有两种模型:点对点(P2P)和发布订阅(PUB/SUB),队列模式中,消息生产者叫做发送...
ActiveMQ服务重启 收不到消息
ActiveMQ做大并发的缓冲,消息的生产和消费都是用的spring封装的消息监听容器。rn在系统测试过程中偶然发现,消费无法发送,发送端直接报异常。显示连接拒绝。直接重启ActiveMQ,问题依然存在。rn只能重启消费发送的服务,消息可以发送了。查看ActiveMQ控制台,有消息发送成功了,但是没有消费者。重启消费者服务,可以了。rn可以以为是spring的消息监听容器的问题,找了半天,没有找到
Activemq消息的发送与接收
这两天做项目用到即时消息的发送与接受,所以突击自学activemq。如果能看到这,说明你已经搜了好多资料了,这里我就不多说了。经过我的学习与网上的各种资料整理,封装了一个简单轻便的工具类方便大家使用。rn第一步:需要导入jar包rn n n org.apache.activemqn activemq-coren 5.7.0n n n org.apache.activemqn active
Spring+ActiveMQ消息队列+前台接收消息
整合Spring + ActiveMQ 的朋友可以下载看一下 简单易懂
ActiveMQ学习笔记之十--从队列中接收消息
rn从队列中接收消息rnpublic static void testReceive() throws Exception {rn    ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");rn    Connection connection = factory.createConn...
ActiveMQ中消费者是如何接收消息的(二)
上篇文章大致讲述了同步消费者和异步消费者接收消息的异同(详见《ActiveMQ中消费者是如何接收消息的(一)》http://manzhizhen.iteye.com/blog/2094130 ),但我们还未讲到消息是在什么时候放入消费者ActiveMQMessageConsumer类的“消息容器”unconsumedMessages中的,这很关键,因为为了解耦,消费者类不需要知道你ActiveMQ
activeMq发送消息变慢
之前,百度一直没有找不到原因。特来写个解决方案 n解决方案: n我们现在用queue都是每天几千条每月几万条吧,内存越吃越多,到时候就会堵了。 nactivemq重启,释放内存,就可以解决发送消息变慢的问题。 n每个月的运维例行重启就可以把这个问题忽略掉。
spring整合ActiveMQ订阅模式(对象消息发送)
归纳一下spring整合activemq的基础配置以及使用,监听到消息后的更多逻辑操作需要自己完成,需要源代码可联系:993610778
ActiveMQ支持多个topic订阅消息接收设置
描述:最近做一个预警的功能,使用到ActiveMQ消息订阅功能,但是问题来了,页面上有四个Topic订阅消息就接收不到消息,接收一个topic消息就没问题。排查问题后,程序是没问题的,问题应该出现在ActiveMQ配置文件设置那块。直接找到activemq.xml,如图:nnnn源代码:nn<broker xmlns="http://activemq.apache.org/schema/co...
activemq向android推送消息实例
activemq向android推送消息实例,测试环境activemq5.9.1版,别忘了修改你的主机地址
Redis发布订阅接收不到广播的消息的问题
其实问题很简单,我广播出去的时候是传输的对象nnn //单节点实现方式,如果是单节点建议使用该方式,如果是分布式部署废弃该方式n Boolean sendFlag = webMessageHandler.sendMessageToUser(message);n if(!sendFlag) {//发送失败广播出去,让其他节点发送n redisTemplate.conver...
activemq消息队列-使用监听器来接收消息(常用)
n rn//点对点-使用监听器接收消息public class ConsumerListener {       // tcp 地址 服务器器端地址    //public static final String BROKER_URL =ActiveMQConnection.DEFAULT_BROKER_URL;  // 其值为 "tcp://localhost:61616"; public st...
ActiveMq点对点模式发送、接收消息
消息发送流程:n1) 客户机发送消息到JMS消息中间件n2) 服务端负责监听JMS消息目的地。n3) 发现JMS里面有消息产生,服务就可以接受消息。n点对点消息发送服务:n1) 消息只能被一个服务接受n2) 多个服务同时监听消息服务器,遵循先来后到原则。n3) 消息一旦被接受,消息自动消失。n4) 如果消息一直没有被接受,消息会等待被接受,直到被接受为止。
ActiveMQ 发送消息和接收消息 Demo
package com.mq;rnrnpublic class ConstanParam {rn public static String USER = "admin";rn public static String PASSWORD = "123456";rn public static String URL = "failover://tcp://10.10.10.10:61
ActiveMQ消息的发布与订阅
消息的发布与订阅nPublish类npackage com.cb01;nnimport javax.jms.Connection;nimport javax.jms.ConnectionFactory;nimport javax.jms.Destination;nimport javax.jms.JMSException;nimport javax.jms.MessageProducer;ni
Spring整合ActiveMQ接收消息
操作步骤nn第一步:把Activemq相关的jar包,添加到工程中 n第二步:创建一个MessageListener的实现类,负责监听 n第三步:配置MessageListener监听器 n第四步:初始化Spring容器,进行监听nn添加jar包nn<!-- activemq的jar包 -->n<dependency>n <groupId>org.apac...
java activeMQ消息的发送与接收
java activeMQ消息的发送与接收rn         rnactivemq是我们经常用到的消息队列之一,比如说速度快,对spring的很好的支持,支持多种协议等等,今天我们就来看一下activeMQ消息的发送与接收的源代码。rn      我这里使用了两个配置文件,其实在一个配置文件里面就可以完成发送与接收功能,但是为了方便观察日志,我就使用了两个配置文件。在使用代码之前需要搭建好act
C#读取ActiveMQ任务
    关于ActiveMQ在C#中的应用,https://blog.csdn.net/bodybo/article/details/5647968这篇文章已经有介绍,但是这篇文章介绍的是ActiveMQ推送消息的模式,我碰到的场景是当前分布式节点从消息队列中读取任务,并在当前节点开启多线程进行处理。如果在本地进行缓存,则不利于负载均衡,且服务器宕机会造成任务丢失,所以我采用了主动从消息队列读取的...
RabbitMQ 接收不到。一次接的到,一次接不到
在项目中用RabbitMQ做APP推送, n发现日志中显示,RabbitMQ规律性的一次接收得到,一次接不到。 n后来发现是 我本地程序和 服务器部署的程序使用了同样的对列名,也就是在这个生产消费者模式中,存在两个消费者。 n则就会在我本地产生一次接的到,一次接不到的问题。
利用Spring与ActiveMQ整合发送、接收消息实例(Queue与Topic模式)
利用Spring与ActiveMQ整合发送、接收消息实例,同时使用Queue与Topic两种模式。nn1.运行环境:Win10+Eclipse Java EE IDEOxygen Release (4.7.0)+jdk1.8nn2.web-inf/lib 中依赖jar包:activemq-all-5.15.0.jarnnspring-aop-4.2.2.RELEASE.jarnnspring...
【MQ】ActiveMQ(三)——spring管理ActiveMQ,实现发送和接收效果
一、前言      在前一篇博客中,小编向大家简单的介绍了一下ActiveMQ的消息处理方式,包括了点对点,发布订阅两种模式。写向大家展示了一下如何使用,但是在真正开发的时候我们是不会写那么一大片代码,从建立连接工厂,再由连接工厂创建连接对象,连接对象打开连接,连接对象然后创建session,session创建目的地,用于连接数据。      这个过程是比较复杂的,在开发的时候一般我们会使用Spri
Activemq 使用Stomp方式接收、过滤 topic 数据
因业务需要,本人在测试机上部署了一个activemq。突然奇想 要用 Stomp方式请求 TOPIC 数据。n打开activemq stomp 文档,发现内容十分的节省啊,不过还好给了两个demo.
spring与activemq(三种消息监听方式)
n  rnn1.3     消息监听器MessageListenernrn       在Spring整合JMS的应用中我们在定义消息监听器的时候一共可以定义三种类型的消息监听器,分别是MessageListener、SessionAwareMessageListener和MessageListenerAdapter。下面就分别来介绍一下这几种类型的区别。rnn1.3.1  MessageList...
activemq订阅模式以及消息时长和确认机制
代码如下:rnrnrnrnrnrn[java] viewrn plain copyrnrnrn rnrnrnrnpackage com.activemq;  rnimport org.apache.activemq.ActiveMQConnectionFactory;  rnimport javax.jms.*;   rn  rnpublic class TopicPub {  rn     pu
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 微信消息接口开发视频 微信末班消息java