1. 问题描述

rocketmq 生产者发消息正常 mq后台也可以看到发出的消息

但是消费者一直没消费 好像订阅没成功

2. 问题排查

通过上图查看 确实没有检测到订阅者

3. 问题解决

线上环境是 两台机器 共四个实例

项目中订阅了两个不同地址不同topic的mq

然后那个instanceName会有命名冲突

ip@进程id

重新修改instanceName的value

//设置instanceName
 defaultMQPushConsumer.setInstanceName(System.currentTimeMillis()+ JVMRandom.nextLong(10)+"");

spring-rocketmq.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--好评加分 差评扣分-->
<bean id="evaluationConsumer" class="org.apache.rocketmq.client.consumer.DefaultMQPushConsumer">
<property name="consumerGroup" value="${driver_x_group}"/>
<property name="namesrvAddr" value="${driver_x_url}"/>
</bean>
<!--好评消费者 监听器-->
<bean id="evaluationMessageListener" class="com.x.mq.EvaluationXListener"/>
<!--消费者启动类-->
<bean id="evaluationOrderlyConsumer" class="com.x.mq.base.EvaluationXConsumer"
init-method="init" destroy-method="destroy" scope="singleton">
<property name="defaultMQPushConsumer" ref="evaluationConsumer"/>
<property name="evaluationMessageListener" ref="evaluationMessageListener"/>
<property name="topic" value="${driver_score_topic}"/>
<property name="tag" value=""/>
</bean>
</beans>

consumer.java

package com.x.mq.base;

import com.x.mq.EvaluationMessageListener;
import org.apache.commons.lang.math.JVMRandom;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.util.Random; /**
* Created by admin on 2018/1/31.
*/
public class EvaluationConsumer {
private static final Logger logger = LoggerFactory.getLogger(EvaluationConsumer.class);
private DefaultMQPushConsumer defaultMQPushConsumer;
private EvaluationMessageListener evaluationMessageListener;
private String tag;
private String topic; public EvaluationMessageListener getEvaluationMessageListener() {
return evaluationMessageListener;
} public void setEvaluationMessageListener(EvaluationMessageListener evaluationMessageListener) {
this.evaluationMessageListener = evaluationMessageListener;
} public String getTag() {
return tag;
} public void setTag(String tag) {
this.tag = tag;
} public String getTopic() {
return topic;
} public void setTopic(String topic) {
this.topic = topic;
} public DefaultMQPushConsumer getDefaultMQPushConsumer() {
return defaultMQPushConsumer;
} public void setDefaultMQPushConsumer(DefaultMQPushConsumer defaultMQPushConsumer) {
this.defaultMQPushConsumer = defaultMQPushConsumer;
} public void init() throws MQClientException {
// 订阅指定Topic下tags
defaultMQPushConsumer.subscribe(topic, tag);
// 设置Consumer第一次启动是从队列头部开始消费还是队列尾部开始消费<br>
// 如果非第一次启动,那么按照上次消费的位置继续消费
defaultMQPushConsumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);
// 设置为集群消费(区别于广播消费):集群只消费一次,广播会被多个消费者消费
defaultMQPushConsumer.setMessageModel(MessageModel.CLUSTERING);
// defaultMQPushConsumer.registerMessageListener(messageListenerConcurrently);
defaultMQPushConsumer.registerMessageListener(evaluationMessageListener);
//设置instanceName
defaultMQPushConsumer.setInstanceName(System.currentTimeMillis()+ JVMRandom.nextLong(10)+"");
// 批量消费
defaultMQPushConsumer.setConsumeMessageBatchMaxSize(20);
// Consumer对象在使用之前必须要调用start初始化,初始化一次即可<br>
defaultMQPushConsumer.start();
logger.info("==rocketmq==DefaultMQPushConsumer start success! consumerGroup:{},nameServiceAddr:{},topic:{},tag:{}",defaultMQPushConsumer.getConsumerGroup(),defaultMQPushConsumer.getNamesrvAddr(),topic,tag);
}
public void destroy(){
defaultMQPushConsumer.shutdown();
}
}

rocketmq Don't have SubscriptionGroup的更多相关文章

  1. RocketMQ原理解析-Broker

    broker 1. broker的启动 brker的启动 Broker向namesrv注册 1. 获取namesrv的地址列表(是乱序的) 2. 遍历向每个namesrv注册topic的配置信息top ...

  2. 分布式消息队列RocketMQ部署

    一.RocketMQ简介: RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.支持严格的消息顺序: 2.支持Topic与Queue两种模式: 3.亿级消息堆积能力: 4.比较友好 ...

  3. rocketMq概念介绍

    rocketMq官网 http://rocketmq.apache.org/ rocketMq逻辑概念介绍 rocketMq逻辑图 备注:    改图片分享自李占卫的网上家园 说明: 在rocketM ...

  4. (原创)Rocketmq分布式消息队列的部署与监控

    -------------------------------------------------------------------------------------------- 一.Rocke ...

  5. RocketMQ中Broker的启动源码分析(一)

    在RocketMQ中,使用BrokerStartup作为启动类,相较于NameServer的启动,Broker作为RocketMQ的核心可复杂得多 [RocketMQ中NameServer的启动源码分 ...

  6. RocketMQ 主题扩分片后遇到的坑

    目录 1.案情回顾 1.1 集群现状 1.2.RocketMQ 在线扩容队列 1.3 消息发送 2.问题暴露 3.问题分析 4.问题复盘 消息组接到某项目组反馈,topic 在扩容后出现部分队列无法被 ...

  7. 深入理解RocketMQ(四)--消息存储

    一.MQ存储分类 MQ存储主要分为以下三类: 文件系统:RocketMQ/Kafka/RabbitMQ 关系型数据库DB:ActiveMQ(默认采用的KahaDB做消息存储)可选用JDBC的方式来做消 ...

  8. rocketmq详解-[个人版]-第一章

    一.消息队列概述 1.1.消息队列由来 在运维场景中,我们经常会存在如下场景:一旦出现S1异常,C1将因为S1的影响而异常(C为客户端,s为服务端) 当然可以通过添加多个S的方式,实现高可用.但这样会 ...

  9. RocketMQ原理解析-Remoting

    Remoting2. 通信层底层传输协议 RocketMq服务器与客户端通过传递RemotingCommand来交互,通过NettyDecoder,对RemotingCommand进行协议的编码与解码 ...

随机推荐

  1. Jmeter中一些概念的理解——90%响应时间、事务、并发

    一.90%响应时间(参考虫师博客) 90%Line  一组数由小到大进行排列,找到他的第90%个数(假如是12),那么这个数组中有90%的数将小于等于12 . 用在性能测试的响应时间,也就是90%请求 ...

  2. 钉钉机器人集成Jenkins推送消息模板自定义发送报告

    一.由于公司同样也使用了钉钉.那么在做Jenkins集成自动化部署的时候,也是可以集成钉钉的. 那种Jenkins下载钉钉插件集成,简单设置就可以完成了.我们今天要做的是,定制化的发送消息. 钉钉推送 ...

  3. jenkins+appium android app自动化测试

    jenkins安装 pytest+jenkins安装+allure报告 新建任务 其他默认,保存 立即构建 test_login.py from src.pages import login_page ...

  4. 启动多个appium服务(同时运行多台设备)

    准备: 一台真机一台模拟器(使用的是“夜神模拟器”) 先查看是否检测到设备  adb devices    由上图可看出没有检测到模拟器(夜神模拟器已开启) 可通过以下配置完成: 第一步:找到adb的 ...

  5. JSONP-跨域读取数据

    页面代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...

  6. Linux下ls命令使用详解(转)

    说明:我们在linux下使用ll时,其实就是ls -l.ls才是最终的命令程序. ls命令是linux下最常用的命令之一,ls跟dos下的dir命令是一样的都是用来列出目录下的文件,List即列表的意 ...

  7. 1、 小白带你入坑xamarin系列之环境搭建和准备

    重点提示 由于xamarin发展更新很快 目前教程部分内容已经过时 请注意下载最新版本   2018.05.23 www.xamarin.com 1. 小白带你入坑xamarin系列之环境搭建和准备 ...

  8. springboot: mybatis逆向工程

    第一步: pom文件配置 黄线的部分是所要配置的 <?xml version="1.0" encoding="UTF-8"?> <projec ...

  9. hibernate_SessionFactory_getCurrentSession_JTA简介

    JTA:java transaction  api java里所规定的一种管理事务的API 在另一篇播客我写到了,SessionFactory需要关注两个方法, 即:  openSession     ...

  10. jquery mobile 动态加载标签时,无法正常展示样式

    原因 在chrome中审查元素,发现其增加了很多没有直接写在页面上的标签和样式.页面标签首先经过jquery.mobile-1.4.5.min.js的处理,添加了许多标签,然后再用css布局 解决方案 ...