【Python】记录一次 Linux + Python + RocketMQ 辛酸历程


这是记录一次辛酸的Linux + Python + RocketMQ使用历程,需求背景是需要验证线上一个RocketMQ服务和里面的Topic,如果使用Java,还得打包,上传,太麻烦,使用脚本语言会方便很多,遇到的问题比较多,但是又不想省略其中的过程,就全记录下来了。

安装Python

准备环境

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

下载Python:https://www.python.org/downloads/source/

将压缩包上传至服务器后,解压:

tar -zxvf Python-3.10.5.tgz

编译安装

进入解压后的文件夹,配置Python安装目录:

mkdir -p /home/python3

./configure --prefix=/home/python3

执行完上面的操作之后,依次执行make、make install

安装完成之后,创建软链接

ln -s /neworiental/zhurunhua/python3/bin/python3.10 /usr/local/bin/python3

ln -s /neworiental/zhurunhua/python3/bin/pip3.10 /usr/local/bin/pip3

  [root@mq01 Python-3.10.5]# ln -s /neworiental/zhurunhua/python3/bin/python3.10 /usr/local/bin/python3 
[root@mq01 Python-3.10.5]# 
[root@mq01 Python-3.10.5]# python3
Python 3.10.5 (main, Aug 19 2022, 17:07:38) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
[root@mq01 Python-3.10.5]# 
[root@mq01 Python-3.10.5]# ln -s /neworiental/zhurunhua/python3/bin/pip3.10 /usr/local/bin/pip3             
[root@mq01 Python-3.10.5]# 

校验:

遇到问题

pip3报错: (Caused by SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)) - skipping

看上去原因是没有配置openssl

如果机器上没有安装,需要先安装openssl

使用openssl version或 which openssl 查看是否安装

我的机器上没有安装,还需要先安装

安装openssl

wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz --no-check-certificate

下载后,上传至服务器,解压,进入解压后的文件分别执行:

./config

make

make install

安装完成后,查看安装路径:

[root@mq01 zhurunhua]# which openssl
/usr/local/bin/openssl
[root@mq01 zhurunhua]# 

创建软连接

mv /usr/bin/openssl /usr/bin/openssl.bak

ln -s /usr/local/bin/openssl /usr/bin/openssl

执行 openssl version 看是否成功:

又来两个错误:

openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

openssl: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory

不怕,找到文件后,再创建软连接

[root@mq01 openssl-1.1.1n]# 
[root@mq01 openssl-1.1.1n]# openssl version
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
[root@mq01 openssl-1.1.1n]# 
[root@mq01 openssl-1.1.1n]# find / -name libssl.so.1.1
/usr/local/lib64/libssl.so.1.1
[root@mq01 openssl-1.1.1n]# ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1      
[root@mq01 openssl-1.1.1n]# 
[root@mq01 openssl-1.1.1n]# 
[root@mq01 openssl-1.1.1n]# openssl version                                              
openssl: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
[root@mq01 openssl-1.1.1n]# find / -name libcrypto.so.1.1
/usr/local/lib64/libcrypto.so.1.1
[root@mq01 openssl-1.1.1n]# ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1      
[root@mq01 openssl-1.1.1n]# 
[root@mq01 openssl-1.1.1n]# 

安装成功:

[root@mq01 openssl-1.1.1n]# openssl version                                                    
OpenSSL 1.1.1n  15 Mar 2022
[root@mq01 openssl-1.1.1n]# 

重新编译

进入Python压缩包的解压目录:

cd /neworiental/zhurunhua/Python-3.10.5

编译:

./configure --prefix=/neworiental/zhurunhua/python3 --with-openssl=/usr/local/bin/openssl --with-openssl-rpath=auto

make又报错了

看起来只能是升级,试了几次还是报这个错,决定换个思路。

尝试一个新的方法,可以修改pip的配置,修改pip下载源,不使用带https的下载源

创建配置文件

mkdir -p ~/.pip
touch ~/.pip/pip.conf
vim ~/.pip/pip.conf

添加内容并保存:

[global]
index-url=http://pypi.douban.com/simple/
extra-index-url=
        http://mirrors.aliyun.com/pypi/simple/
#proxy = [user:passwd@]proxy.server:port
[install]
trusted-host=
        pypi.douban.com
        mirrors.aliyun.com
ssl_verify: false

更新:pip3 install --upgrade pip

可以看到,已经可以正常安装了

安装依赖库

下载 rocketmq-client-cpp-2.0.0-centos7.x86_64.rpm

wget https://github.com/apache/rocketmq-client-cpp/releases/download/2.0.0/rocketmq-client-cpp-2.0.0-centos7.x86_64.rpm

也可以下载后上传

直接安装

rpm -ivh rocketmq-client-cpp-2.0.0-centos7.x86_64.rpm

[root@mq01 zhurunhua]# rpm -ivh rocketmq-client-cpp-2.0.0-centos7.x86_64.rpm 
Preparing...                          ################################# [100%]
        package rocketmq-client-cpp-2.0.0-centos.x86_64 is already installed
[root@mq01 zhurunhua]# 
[root@mq01 zhurunhua]# 

准备代码

import sys
import time

from rocketmq.client import PushConsumer

# 接收参数
namesrv = sys.argv[1]
topic = sys.argv[2]
consumer = sys.argv[3]

print("=========================")
print("[namesrv]:", namesrv)
print("[topic]:", topic)
print("[consumer]:", consumer)
print("=========================")


# 确认操作
msg = input("是否继续:[y/n]:")
if msg == 'y' or msg == 'Y':
    print("参数确认无误,操作继续...")
elif msg == 'n' or msg == 'N':
    print("操作取消...")
    sys.exit()
else:
    print("输入有误,操作取消...")
    sys.exit()


def callback(msg):
    print('Received message. messageId: ', msg.id, ' body: ', msg.body)


consumer = PushConsumer(consumer)
consumer.set_namesrv_addr(namesrv)
consumer.subscribe(topic, callback)
consumer.start()


while True:
    time.sleep(3600)

验证

执行脚本:

注意三个参数,第一个nameserver,第二个topic,第三个group:

可以收到消息

控制台也可以收集到客户端的信息:

总算是成功了。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值