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进行协议的编码与解码 ...
随机推荐
- SpringBoot 异步线程简单三种样式
引用:在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在Spring 3.x ...
- Java中常用到的文件操作那些事(二)——使用POI解析Excel的两种常用方式对比
最近生产环境有个老项目一直内存报警,不时的还出现内存泄漏,导致需要重启服务器,已经严重影响正常服务了.获取生成dump文件后,使用MAT工具进行分析,发现是其中有个Excel文件上传功能时,经常会导致 ...
- vue重构后台管理系统调研
Q4要来了,我来这家公司已经一个季度了,通过对公司前端框架的整体认识,对业务的一些认识,发现,这些东西也都是可以重构,无论是v2,还是v3的代码. 首先就要那后台管理来开刀来,现有的技术框架就是php ...
- 简单创建一个完整的struts2框架小程序
要完成一个struts2框架的搭建, 1.首先应该从官网上下载最新的jar包,网络连接:http://struts.apache.org/download.cgi#struts2514.1,选择下载F ...
- python之守护进程
主进程创建子进程,然后将该进程设置成守护自己的进程,守护进程就好比崇祯皇帝身边的老太监,崇祯皇帝已死老太监就跟着殉葬了. 关于守护进程需要强调两点: 其一:守护进程会在主进程代码执行结束后就终止 其二 ...
- winform 验证用户正确后打开新窗口时关闭登陆窗口
在program.cs中 Login login=new Login(); if( login.ShowDialog()==DialogResult.Ok)//注意这里要显示模 ...
- Google发布移动网站设计原则
Google 刚刚发布了由 Google 与 AnswerLab 联合打造,名为<Principles of Mobile Site Design: Delight Users and Driv ...
- mysql 非安装版的配置
一直以来都是使用wamp中集成的mysql数据库,今天突然想试试下载一个mysql的zip包进行配置. 一.下载mysql非安装版 下载地址可以到:http://dev.mysql.com/downl ...
- ftp&nginx搭建图片服务器
下面使用ftp+nginx搭建一个简单的服务器 ftp用于文件的传输 nginx提供http服务 nginx服务器的安装和配置可以参照之前的教程:nginx安装及其配置详细教程 下面介绍ftp服务的安 ...
- python-UDP传输模型
#!/usr/bin/python #coding=utf-8 #服务器端 from socket import * from time import ctime HOST="192.168 ...