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进行协议的编码与解码 ...
随机推荐
- python web开发学习笔记一:javascript基础
一.认识js: 能进入到软件所实习是我的最大的收获,也是我的荣幸,我相信努力付出一定能够换回收获. 项目最先开始的是接触到web前端的一些内容,我们需要利用flask搭建应该有的框架.我有一些pyth ...
- 编程开发之--java多线程学习总结(4)
3.使用锁机制lock,unlock package com.lfy.ThreadsSynchronize; import java.util.concurrent.locks.Lock; impor ...
- [温故]图解java多线程设计模式(一)
去年看完的<图解java多线程设计模式>,可惜当时没做笔记,导致后来忘了许多东西,打算再温习下这本书,顺便在这里记录一下~ 1.顺序执行.并行.并发 顺序执行:多个操作按照顺序依次执行. ...
- 为什么要重写hashcode方法和equals方法
我们可能经常听到说重写equals方法必须重写hashcode方法,这是为什么呢?java中所有的类都是Object的子类,直接上object源码 /* * Copyright (c) 1994, 2 ...
- eclipse左边的项目栏消失的处理方法
window —–> Show View —–> other —–> package Explorer
- c# 获取项目根目录方法
编写程序的时候,经常需要用的项目根目录.自己总结如下 1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径 ...
- (转)OpenStack —— 原理架构介绍(一、二)
原文:http://blog.51cto.com/wzlinux/1961337 http://blog.51cto.com/wzlinux/category18.html-------------O ...
- python安装及配置
1.进入python官网https://www.python.org/2.导航栏选择Download -> Windows3.按照系统版本点击选择32.64位安装包64 Windows x86 ...
- JavaScript设计模式-9.工厂模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 1-2 Mobx 入门实践之TodoList(官方Demo)
第一步:导入模块 import React, { Component } from 'react'; import { observable, autorun,computed } from 'mob ...