腾讯 cmq_rabbitmq消息队列

腾讯 cmq_rabbitmq消息队列环境架构图组件介绍组件监听端口CMP依赖VIP:准备工作3台8*16服务器安装文档:物料包(组件物料包和python脚本):https://cmq-1255613487.cos.ap-chengdu.myqcloud.com/install_cmq/CMQ-ALL.zip安装[192.168.1.66]前端组件:#安装#[root@node_66~]#lsCMQ-1.0.2-软件包.tar.gzmk…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

环境

腾讯消息队列CMQ部署与验证

 

架构图

腾讯消息队列CMQ部署与验证

 

组件介绍

组件监听端口

腾讯消息队列CMQ部署与验证

 

腾讯消息队列CMQ部署与验证

 

CMP依赖VIP:

腾讯消息队列CMQ部署与验证

 

准备工作

3台8*16服务器
安装文档: 
物料包(组件物料包和python脚本) :https://cmq-1255613487.cos.ap-chengdu.myqcloud.com/install_cmq/CMQ-ALL.zip

Jetbrains全家桶1年46,售后保障稳定

安装[192.168.1.66] 前端组件:

#安装
#[root@node_66 ~]# ls
CMQ-1.0.2-软件包.tar.gz

mkdir -p /opt/tmp
tar xf CMQ-1.0.2-软件包.tar
cp -r v1.0.0/cmq_console/precomponent/*  /opt/tmp/

#安装cmq_console组件
cd /opt/tmp/

#执行部署[填写内网IP]
sh pre_component_install.sh 192.168.1.66 192.168.1.66

#---------------------------------------------------------------------------

#安装 auth access 组件
#将 cmq_console/auth-access 目录下所有文件拷贝到 /opt/tmp 目录下,并进入此目录

cp -r /root/v1.0.0/cmq_console/auth-access/* /opt/tmp
sh access_auto_install.sh 192.168.1.66 192.168.1.66

#提示:
#backup script to /opt/script
#cp: cannot stat ‘./*.md’: No such file or directory   报错忽略


#安装cmq_backserver

cp -r /root/v1.0.0/cmq_backserver /opt/tmp
cd /opt/tmp/cmq_backserver


## 脚本内容 vim 1.sh
#-------------------------------------------------------------------#
cat >1.sh<<eof
#!/bin/bash
ip_a=192.168.1.66 # 根据上面的部署图修改为a、b、c三个节点的ip
ip_b=192.168.1.160
ip_c=192.168.1.202
password=123456   # 节点的登录密码修改
coreNum=6 # 节点的核数减2
#dbhost=192.168.1.66
sed -i "s/^passwd=.*/passwd=${password}\r/" config.txt
sed -i "s/^routeProxy=.*/routeProxy=${ip_c}\r/" config.txt
sed -i "s/^access=.*/access=${ip_b} ${ip_c}\r/" config.txt
sed -i "s/^pushServer=.*/pushServer=${ip_b}\r/" config.txt
sed -i "s/^broker=.*/broker=${ip_a} ${ip_b} ${ip_c}\r/" config.txt
sed -i "s/^monitor=.*/monitor=${ip_a} ${ip_c}\r/" config.txt
sed -i "s/^master=.*/master=${ip_a} ${ip_b}\r/" config.txt
sed -i "s/^oss=.*/oss=${ip_b}\r/" config.txt
sed -i "/^coreNum=.*/d" config.txt
sed -i "/^oss=.*/a\\coreNum=${coreNum}\r" config.txt
sed -i "s/^barad=.*/barad=${ip_c}\r/" config.txt
sed -i "s/^ctsdb=.*/ctsdb=${ip_a} ${ip_b} ${ip_c}\r/" config.txt
sed -i "s/^jvmMem=.*/jvmMem=4g\r/" config.txt
sed -i "s/^indexTtl=.*/indexTtl=30\r/" config.txt
sed -i "s/^metricTtl=.*/metricTtl=7\r/" config.txt
sed -i "s/^nameserverVip=.*/nameserverVip=${ip_c}\r/" config.txt
sed -i "s/^baradIp=.*/baradIp=${ip_c}\r/" config.txt
sed -i "s/^ctsdbIp=.*/ctsdbIp=${ip_a}\r/" config.txt
sed -i "s/^dbhost=.*/dbhost=${ip_a}\r/" config.txt
eof
#-------------------------------------------------------------------#

#执行修改
sh -x 1.sh 


# 执行安装
sh install_all.sh config.txt



#此时访问 :http://192.168.1.66/  已经可以打开控制台,但是没什么卵用,啥都没有,后台都还没装
默认账号: qcloudAdmin
默认密码: qcloudAdmin

打开web页面 http://192.168.1.66/

腾讯消息队列CMQ部署与验证

 

问题解决:

问题1: Connect to 172.16.33.42:80 [/172.16.33.42] failed: connect timed out

解决: 进入http://[IP]/tsf-manager/action-path?rid=1

搜索cmq,改为oss组件IP

[root@node_66 ~]# cd /opt/tmp/cmq_backserver
[root@node_66 cmq_backserver]# grep oss config.txt
#oss=172.16.66.198 172.16.67.224
oss=192.168.1.110

腾讯消息队列CMQ部署与验证

 

修改IP:

腾讯消息队列CMQ部署与验证

 

搜索修改monitor:

腾讯消息队列CMQ部署与验证

 

确定barad IP monitor的IP需要改为barad的IP

[root@node_66 cmq_backserver]# grep barad config.txt
barad=192.168.1.202
baradIp=192.168.1.202

腾讯消息队列CMQ部署与验证

 

完成结果:

腾讯消息队列CMQ部署与验证

 

CMQ使用:

新建仓库:
新建仓库使用的是access节点IP grep access config.txt

http://[ip]/cmq-manager/zone

[root@node_66 simple_demo]# grep access  /opt/tmp/cmq_backserver/config.txt 
access=192.168.1.160 192.168.1.202

腾讯消息队列CMQ部署与验证

 

腾讯消息队列CMQ部署与验证

 

创建结果:

腾讯消息队列CMQ部署与验证

 

两个主题仓库,操作一样,端口不变,ip用另一个access节点的ip

创建集群:

腾讯消息队列CMQ部署与验证

 

腾讯消息队列CMQ部署与验证

 

配置结果

腾讯消息队列CMQ部署与验证

 

向 queue添加节点

添加节点首先添加前置机
192.168.1.66

腾讯消息队列CMQ部署与验证

 

向topoc添加节点

腾讯消息队列CMQ部署与验证

 

初始化推送节点

腾讯消息队列CMQ部署与验证

 

初始化推送节点使用 pushServer ip
[root@node_66 simple_demo]# grep pushServer /opt/tmp/cmq_backserver/config.txt
pushServer=192.168.1.160

端口 50012

[这个图丢了 方法一样的 过滤出来改为初始化节点IP接可以了]

腾讯消息队列CMQ部署与验证

 

添加接入层注册access [也是pushserver节点IP]

添加队列

[root@node_66 simple_demo]# grep pushServer /opt/tmp/cmq_backserver/config.txt
pushServer=192.168.1.160

腾讯消息队列CMQ部署与验证

 

[root@node_66 simple_demo]# grep access /opt/tmp/cmq_backserver/config.txt
access=192.168.1.160 192.168.1.202

腾讯消息队列CMQ部署与验证

 

添加主题:

腾讯消息队列CMQ部署与验证

 

添加完成后如图:

腾讯消息队列CMQ部署与验证

 

添加节点后 出现版本号才算成功
添加完成后,直到 **出现版本号** 才算注册成功,多在运营端刷新一下会发现版本号出现,这个版本号可能需要10-30分钟出现,基于服务器配置

信令服务器添加

腾讯消息队列CMQ部署与验证

 

创建队列:

http://IP/cmq/index

腾讯消息队列CMQ部署与验证

 

腾讯消息队列CMQ部署与验证

 

进入 SDK 目录

#先得到nameserver ip
[root@node_66 simple_demo]# grep nameserver /opt/tmp/cmq_backserver/config.txt
nameserverVip=192.168.1.202


#解压python_sdk_private.tar.gz文件,然后进入解压的 sdk/simple_demo/ 目录下,修改cmq_sample_queue.py 文件

[root@node_66 opt]# cd /root/v1.0.0/SDK/
[root@node_66 SDK]# tar xf python_sdk_private.tar.gz
[root@node_66 simple_demo]# cd /root/v1.0.0/SDK/sdk/simple_demo


#替换为nameserver的IP 这个IP通过网页上的信令服务器管理中看到的 namserver ip地址
[root@node_66 simple_demo]# 
sed -i "s/^nameserver =.*/nameserver = 'http:\/\/192.168.1.202'/" /root/v1.0.0/SDK/sdk/simple_demo/cmq_sample_queue.py

腾讯消息队列CMQ部署与验证

 

# 执行以下命令替换创建的queue的名称,这里刚创建的是queue_test 
sed -i "s/^queue_name=.*/queue_name='queue'/" cmq_sample_queue.py

腾讯消息队列CMQ部署与验证

 

## 向队列发送消息:
python ./cmq_sample_queue.py

然后通过页面查看发送消息状态:

腾讯消息队列CMQ部署与验证

 

测试主题模式

同样先在客户端新建主题,添加订阅者,然后进入控制台
http://ip/cmq/topic?rid=1

腾讯消息队列CMQ部署与验证

 

腾讯消息队列CMQ部署与验证

 

腾讯消息队列CMQ部署与验证

 

进入 simple_demo/ 目录下,执行以下命令修改参数,参数来源和队列一样

cd /root/v1.0.0/SDK/
cd /root/v1.0.0/SDK/sdk/simple_demo
#查询
[root@node_66 simple_demo]# grep nameserver /opt/tmp/cmq_backserver/config.txt
nameserverVip=192.168.1.202
#修改
sed -i "s/^nameserver =.*/nameserver = 'http:\/\/192.168.1.202'/" /root/v1.0.0/SDK/sdk/simple_demo/cmq_sample_topic.py

[root@node_66 simple_demo]# grep 'nameserver = ' /root/v1.0.0/SDK/sdk/simple_demo/cmq_sample_topic.py
nameserver = 'http://192.168.1.202'

# 执行以下命令修改topic的名称,这里刚创建的是topic
vim /root/v1.0.0/SDK/sdk/simple_demo/cmq_sample_topic.py
找到:topic_name ="topic"
改为:topic_name ="topic"

[root@node_66 simple_demo]# grep queue_name /root/v1.0.0/SDK/sdk/simple_demo/cmq_sample_queue.py
queue_name='queue'
    my_queue = my_account.get_queue(queue_name)


# 执行命令向主题发送信息,Ctrl+C停止 python ./cmq_sample_topic.py
python ./cmq_sample_topic.py

测试:

腾讯消息队列CMQ部署与验证

 

此时去看服务器堆积是否正常

腾讯消息队列CMQ部署与验证

 

压力测试

# 在部署机节点安装压测工具 
yum install httpd-tools -y

# 进入simple_demo目录下 
cd /root/v1.0.0/SDK/sdk/simple_demo


# 先修改sendmsg.txt的queueName和appid 
echo 'clientRequestId=1231231231&Nonce=37&Timestamp=1563198200&msgBody=my_message+is+1563198200&uin=0&Action=SendMessage&SignatureMethod=HmacSHA1&appId=1&delaySeconds=0&queueName=queue&RequestClient=SDK_Python_1.3' >sendmsg.txt

其中queueName=test 就是队列名称:queue

所以需要改为


# 再修改batchsendmsg.txt的queueName和appid 
# 执行压测,nameserver-ip进行替换 ,命令不能执行请先安装工具: yum install -y httpd-tools
# 压测时应该选择 barad 的IP 进行压测,grep barad /opt/tmp/cmq_backserver/config.txt
ab -k -n 500000 -c 500 -p sendmsg.txt -T application/json  "http://192.168.1.202/v2/index.php"



appid查询:
http://192.168.1.66/cmq-manager/queue?rid=1&userAppId=1

appId=1
Name=queue

腾讯消息队列CMQ部署与验证

 

清空队列:

腾讯消息队列CMQ部署与验证

 

卸载ACCESS

######################################################
#!/bin/sh
# Host Login Info
user=`sed '/^user=/!d;s/.*=//' $1 | sed 's/\r//g'`
passwd=`sed '/^passwd=/!d;s/.*=//' $1 | sed 's/\r//g'`
sshPort=`sed '/^sshPort=/!d;s/.*=//' $1 |sed 's/\r//g'`

# DB Info
dbhost=`sed '/^dbhost=/!d;s/.*=//' $1 | sed 's/\r//g'`
dbport=`sed '/^dbport=/!d;s/.*=//' $1 | sed 's/\r//g'`
dbuser=`sed '/^dbuser=/!d;s/.*=//' $1 | sed 's/\r//g'`
dbpasswd=`sed '/^dbpasswd=/!d;s/.*=//' $1 | sed 's/\r//g'`

# Component IP List
cmq_nameserver=`sed '/^routeProxy=/!d;s/.*=//' $1 | sed 's/\r//g'`
cmq_access=`sed '/^access=/!d;s/.*=//' $1 | sed 's/\r//g'`
cmq_moni=`sed '/^monitor=/!d;s/.*=//' $1 | sed 's/\r//g'`
#cmq_moni2=`sed '/^monitor2=/!d;s/.*=//' $1 | sed 's/\r//g'`
cmq_master=`sed '/^master=/!d;s/.*=//' $1 | sed 's/\r//g'`
#cmq_master2=`sed '/^master2=/!d;s/.*=//' $1 | sed 's/\r//g'`
cmq_oss=`sed '/^oss=/!d;s/.*=//' $1 | sed 's/\r//g'`
cmq_publisher=`sed '/^pushServer=/!d;s/.*=//' $1 | sed 's/\r//g'`
cmq_broker=`sed '/^broker=/!d;s/.*=//' $1 | sed 's/\r//g'`



# Barad Info
barad=`sed '/^barad=/!d;s/.*=//' $1 | sed 's/\r//g'`
ctsdb=`sed '/^ctsdb=/!d;s/.*=//' $1 | sed 's/\r//g'`
jvmMem=`sed '/^jvmMem=/!d;s/.*=//' $1 | sed 's/\r//g'`
indexTtl=`sed '/^indexTtl=/!d;s/.*=//' $1 | sed 's/\r//g'`
metricTtl=`sed '/^metricTtl=/!d;s/.*=//' $1 | sed 's/\r//g'`

yum=$barad" "$ctsdb

baradList=${barad// /,}
ctsdbList=${ctsdb// /,}

# Some Vip
nameserverVip=`sed '/^nameserverVip=/!d;s/.*=//' $1 | sed 's/\r//g'`
baradIp=`sed '/^baradIp=/!d;s/.*=//' $1 | sed 's/\r//g'`
ctsdbIp=`sed '/^ctsdbIp=/!d;s/.*=//' $1 | sed 's/\r//g'`
ctsdbVport=`sed '/^ctsdbVport=/!d;s/.*=//' $1 | sed 's/\r//g'`

# Directory Of Component
targetDir=`sed '/^targetDir=/!d;s/.*=//' $1 | sed 's/\r//g'`
packageTmpDir='/opt/cmqTmp/'
packageDir=`pwd`'/package'

for moduleName in cmq_oss cmq_moni cmq_master cmq_broker cmq_access cmq_nameserver cmq_publisher yum barad ctsdb;
#for moduleName in cmq_access; 
#for moduleName in barad; 
#for moduleName in cmq_publisher; 
#for moduleName in cmq_moni; 
#for moduleName in ctsdb; 
#for moduleName in cmq_master; 
#for moduleName in cmq_nameserver; 
#for moduleName in cmq_oss; 
#for moduleName in cmq_broker; 
do
iplist=`eval echo '$'"$moduleName"`
for host in $iplist;
do
./onlineUninstall.sh $host $user $passwd $packageDir $packageTmpDir $targetDir$moduleName $moduleName $sshPort $dbhost $dbport $dbuser $dbpasswd $cmq_moni $cmq_master $baradIp $nameserverVip $jvmMem $indexTtl $metricTtl $baradList $ctsdbList $ctsdbIp $ctsdbVport
done
done
######################################################

注释: for moduleName in cmq_oss cmq_moni cmq_master cmq_broker cmq_access cmq_nameserver cmq_publisher yum barad ctsdb; 行
取消注释: #for moduleName in cmq_access; 行 改为 for moduleName in cmq_access; 

修改结果:
#for moduleName in cmq_oss cmq_moni cmq_master cmq_broker cmq_access cmq_nameserver cmq_publisher yum barad ctsdb; 
for moduleName in cmq_access;



#执行卸载操作:
sh uninstall_all.sh config.txt

腾讯消息队列CMQ部署与验证

 

错误问题重现:

#卸载了一个组件然后查看日志和执行结果
cd /root/v1.0.0/SDK/sdk/simple_demo
python ./cmq_sample_topic.py

腾讯消息队列CMQ部署与验证

 

进入日志/data/cmq_nameserver/log

192.168.1.202服务器进入目录监控日志:

cd /data/cmq_access/log/
[root@node_202 log]# tailf  /data/cmq_nameserver/log/*
2021/01/09 17:28:29 requestId: 8649737934421390396, clientIP: 192.168.1.66, scheme: http, arg: clientRequestId: 1231231231; appId:1; Action: PublishMessage; topicName: topic;
2021/01/09 17:28:29 ResponseVipVport, url:http://192.168.1.202:12001, req.host: 192.168.1.202
2021/01/09 17:28:29 ResponseVipVport, clinent_ip: 192.168.1.66, ipHash: 3232279594, proxy_idx: 194
2021/01/09 17:28:29 ResponseVipVport, addr: http://192.168.1.202:12001 has found in vipProxyArr
2021/01/09 17:28:29 $$$, ResponseVipVport, Dial error: dial tcp 192.168.1.202:12001: connect: connection refused
2021/01/09 17:28:29 http: proxy error: dial tcp 192.168.1.202:12001: connect: connection refused
2021/01/09 17:28:29 ResponseVipVport finish request, requestId: 8649737934421390396

腾讯消息队列CMQ部署与验证

 

恢复组件:

腾讯消息队列CMQ部署与验证

 

注释:
# ./cmq_db_init.sh $dbhost $dbport $dbuser $dbpasswd
# for moduleName in cmq_oss cmq_moni cmq_master cmq_broker cmq_access cmq_nameserver cmq_publisher yum barad ctsdb; 
第一行注释是为了不重新初始化数据库,避免数据丢失
第二行不重装所有组件

启用:
for moduleName in cmq_access;

腾讯消息队列CMQ部署与验证

 

#执行安装组件:
sh install_all.sh config.txt



验证发送消息:
cd /root/v1.0.0/SDK/sdk/simple_demo
python ./cmq_sample_topic.py

验证恢复后的组件是否正常

腾讯消息队列CMQ部署与验证

 

原文链接:https://www.cnblogs.com/superlinux/p/14255746.html

如果觉得本文对你有帮助,可以关注一下我公众号,回复关键字【面试】即可得到一份Java核心知识点整理与一份面试大礼包!另有更多技术干货文章以及相关资料共享,大家一起学习进步!

腾讯 cmq_rabbitmq消息队列

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206779.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月4日 下午6:15
下一篇 2025年8月4日 下午6:43


相关推荐

  • 如何评估词向量?「建议收藏」

    如何评估词向量?「建议收藏」如何评估词向量?目前词向量的评估一般分为两大类:extrinsic和intrinsicevaluation即内部评估和外部评估。内部评估内部评估直接衡量单词之间的句法和语义关系。这些任务通常涉及一组预先选择的查询术语和语义相关的目标词汇,我们将其称为queryinventory。similarity相关性度量当前绝大部分工作(比如以各种方式改进wordembedding)都…

    2022年5月29日
    57
  • 图像搜索引擎「建议收藏」

    图像搜索引擎「建议收藏」ListofCBIRenginesFromWikipedia,thefreeencyclopediaJumpto:navigation,searchThisisalistofpubliclyavailableContent-basedimageretrieval(CBIR)engines,theseimagesearc

    2025年9月6日
    10
  • centos 重启网卡

    centos 重启网卡1 centos6 的网卡重启方法 servicenetwo 的网卡重启方法 systemctlres DNS 配置文件 cat etc resolv conf 设置主机和 IP 绑定信息 cat etc hosts 设置主机名 cat etc hostname3 可以使用 nmtui 文本框方式修改 IP4 关闭防火墙并设置开机不启动查看防火墙状态 systemctlsta service 关闭

    2026年3月20日
    1
  • Pycharm删除缓存

    Pycharm删除缓存Pycharm 缓存过大 暴力删除 content dat storageData 文件找到该文件删除即可 一般该文件的路径如下 C Users xxx PyCharm2017 2 system caches content dat storageDataC Users Administrato AppData Local JetBrains PyCharm2020 1 caches content dat storageData 另附更该默认缓存路径以解决缓存问题的方法 clickme

    2026年3月27日
    2
  • CyberChef 如何轻松解密char型字符串(char型恶意脚本反混淆)

    CyberChef 如何轻松解密char型字符串(char型恶意脚本反混淆)CyberChef 如何轻松解密 char 型字符串

    2026年3月17日
    1
  • dotnetty android 交互,DotNetty发送请求的最佳实践

    dotnetty android 交互,DotNetty发送请求的最佳实践长链接发送 request response 时 绝大部分包都是小包 而每个小包都要消耗一个 IP 包 成本大约是 20 30us 普通千兆网卡的 pps 大约是 60Wpps 所以想要提高长链接密集 IO 的应用性能 需要做包的合并 也称为了 scatter gatherio 或者 vectorio 在 linux 下有 readv writev 就是对应这个需求的 减少系统调用 减少 pps 提高网卡的吞

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号