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进行协议的编码与解码 ...
随机推荐
- java项目迁移
电脑重装系统以后或者从不同MyEclipse版本迁移项目时候会出现: Project facet Java 1.5 is not supported by target runtime Apache ...
- iOS ---进阶之摇一摇
1.摇一摇的原理分析 1)在摇动手机时会产生一个动画,界面的图片会在中间分开分别进行向上.向下的位置移动. 分析:此过程就是在主屏幕上设置两个imageView,在开始摇动的方法中对这两个imageV ...
- leetcode-896-单调数列
题目描述: 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的. 如果对于所有 i <= j,A[i] ...
- leetcode-482-License Key Formatting
题目描述: You are given a license key represented as a string S which consists only alphanumeric charact ...
- Mysql 四种事务隔离介绍以及锁机制
还有很多不太懂,这里收集几份大佬文章“飞机票”,待我整理好了,再好好写一篇文章吧. MySQL的四种事务隔离级别 https://www.cnblogs.com/huanongying/p/70215 ...
- C#-WebForm-★★★LinQ-数据的条件组合查询并进行分页展示(未加各种限定)★★★
前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.as ...
- webpack打包报错Chunk.entrypoints: Use Chunks.groupsIterable and filter by instanceof Entrypoint instead
npm install –save-dev extract-text-webpack-plugin@next 会下载到+ extract-text-webpack-plugin@4.0.0-beta. ...
- LCS and LIS
LCS #include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; char s[1005],t ...
- 使用nginx+uwsgi+Django环境部署
环境准备 Python点这里 nginx点这里 uwsgi点这里
- c#StreamWriter,StreamReader类(主要用于文本文件访问)
1.为什么要使用StreamReader或者StreamWriter 如果对文本文件需要读取一部分显示一部分则使用FileStream会有问题,因为可能FileStream会在读取的时候把一个汉字的字 ...