rocketmq Don't have SubscriptionGroup
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的更多相关文章
- RocketMQ原理解析-Broker
broker 1. broker的启动 brker的启动 Broker向namesrv注册 1. 获取namesrv的地址列表(是乱序的) 2. 遍历向每个namesrv注册topic的配置信息top ...
- 分布式消息队列RocketMQ部署
一.RocketMQ简介: RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.支持严格的消息顺序: 2.支持Topic与Queue两种模式: 3.亿级消息堆积能力: 4.比较友好 ...
- rocketMq概念介绍
rocketMq官网 http://rocketmq.apache.org/ rocketMq逻辑概念介绍 rocketMq逻辑图 备注: 改图片分享自李占卫的网上家园 说明: 在rocketM ...
- (原创)Rocketmq分布式消息队列的部署与监控
-------------------------------------------------------------------------------------------- 一.Rocke ...
- RocketMQ中Broker的启动源码分析(一)
在RocketMQ中,使用BrokerStartup作为启动类,相较于NameServer的启动,Broker作为RocketMQ的核心可复杂得多 [RocketMQ中NameServer的启动源码分 ...
- RocketMQ 主题扩分片后遇到的坑
目录 1.案情回顾 1.1 集群现状 1.2.RocketMQ 在线扩容队列 1.3 消息发送 2.问题暴露 3.问题分析 4.问题复盘 消息组接到某项目组反馈,topic 在扩容后出现部分队列无法被 ...
- 深入理解RocketMQ(四)--消息存储
一.MQ存储分类 MQ存储主要分为以下三类: 文件系统:RocketMQ/Kafka/RabbitMQ 关系型数据库DB:ActiveMQ(默认采用的KahaDB做消息存储)可选用JDBC的方式来做消 ...
- rocketmq详解-[个人版]-第一章
一.消息队列概述 1.1.消息队列由来 在运维场景中,我们经常会存在如下场景:一旦出现S1异常,C1将因为S1的影响而异常(C为客户端,s为服务端) 当然可以通过添加多个S的方式,实现高可用.但这样会 ...
- RocketMQ原理解析-Remoting
Remoting2. 通信层底层传输协议 RocketMq服务器与客户端通过传递RemotingCommand来交互,通过NettyDecoder,对RemotingCommand进行协议的编码与解码 ...
随机推荐
- 2. 需要对测试用的数据进行MD5加密
import hashlib phone_num = open("D:/testdata/phone10.txt","r") out_file = open(& ...
- Django-工程搭建
-----环境安装 1.创建虚拟环境 mkvirtualenv django_py3_1.11 -p python3 2.安装django pip install django==1.11.11 ...
- js 移动端获取当前用户的经纬度
一.HTML5 geolocation的属性 if(navigator.geolocation){ navigator.geolocation.getCurrentPosition(onSuccess ...
- js字符串去重
js字符串去重: 1. 去掉字符串前后所有空格: function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } ...
- driver failed programming external connectivity on endpoint wordpress
docker run 镜像的时候报错: [root@docker ~]# docker run -itd --name wordpress -p 88:80 wordpress:v1b77482f80 ...
- Python 求“元组、列表、字典、数组和矩阵”的大小
总结: 首先 import numpy as np A = np.random.randint(1,100,size = (4,5)) >>A>>array([[56, 96, ...
- Web安全学习笔记——SQL注入
一.MySQL注入 1. 常用信息查询 常用信息: 当前数据库名称:database() 当前用户:user() current_user() system_user() 当前数据库版本号:@@ver ...
- swagger注释API详细说明
API详细说明 注释汇总 @RequestMapping此注解的推荐配置 value method produces 示例: @ApiOperation("信息软删除") @Api ...
- spring定时任务详解
(一)在spring.xml里加入task的命名空间 xmlns:task="http://www.springframework.org/schema/task" http:// ...
- 【Eclipse】编译使用Makefile的C工程
创建MakeFile project新建src文件夹,将文件复制到里面.右击makefile,make targets->create->名称填上allmake targets->b ...