python使用rabbitmq收发消息 在centos上使用yum安装rabbitmq-server rabbitMQ和对应的erlang版本匹配

在centos上使用yum安装rabbitmq-server

 

rabbitmq及其依赖环境

rabbitmq安装之前需要安装socat,否则直接安装rabbitmq可能会报错

如果没有找到,则先安装epel源  yum -y install epel-release

yum install socat

rabbitMQ需要和erlang的版本互相匹配具体查看rabbitMQ和对应的erlang版本匹配

在本文中,使用erlang-20.3.8.20-1.el7和rabbitmq-server-3.7.6-1.el7版本。

选择erlang-20.3.x可以兼容新的rabbitMQ3.7.x版本

安装erlang

使用rabbitMQ的镜像地址:https://github.com/rabbitmq/erlang-rpm

将下面内容复制到/etc/yum.repos.d/rabbitmq_erlang.repo文件中

保存后使用yum下载安装。

yum install erlang-版本号

版本号可以通过访问https://packagecloud.io/rabbitmq/erlang获取到要安装的对应版本。

复制代码
# In /etc/yum.repos.d/rabbitmq_erlang.repo
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
复制代码

在这里我是用版本为20.3.x这样就可以兼容两个mq的版本

yum install erlang-20.3.8.20-1.el7

rabbitMQ-server下载安装

使用脚本执行生成rabbitmq_rabbitmq-server.repo文件

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash

或者直接将下面内容复制到/etc/yum.repos.d/rabbitmq_rabbitmq-server.repo文件中

复制代码
[rabbitmq_rabbitmq-server]
name=rabbitmq_rabbitmq-server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_rabbitmq-server-source]
name=rabbitmq_rabbitmq-server-source
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
复制代码

yum下载安装

默认使用yum install rabbitmq-server是安装最新版本的rabbitmq

yum install rabbitmq-server-3.7.6-1.el7

rabbitmq安装完后,操作使用

复制代码
启动RabbitMQ服务
#service rabbitmq-server start
状态查看
#rabbitmqctl status
启用插件
#rabbitmq-plugins enable rabbitmq_management
重启服务
#service rabbitmq-server restart
添加帐号:name 密码:passwd
#rabbitmqctl add_user name passwd
赋予其administrator角色
#rabbitmqctl set_user_tags name administrator
设置权限
#rabbitmqctl set_permissions -p / name ".*" ".*" ".*"
复制代码

rabbit默认的web端口号是15672

访问http://ip:15672进入web管理页面了

注意放通外网访问,我的是腾讯云服务器,需要配置安全组策略,增加外部访问策略放通TCP:15672

测试:发消息

import pika
import random


credentials = pika.PlainCredentials('liruixin', 'Gaosi')

connection = pika.BlockingConnection(pika.ConnectionParameters(host='39.105.98.92', port=5672, virtual_host='/', credentials=credentials))

channel = connection.channel()


# 声明一个队列,生产者和消费者都要声明一个相同的队列,用来防止万一某一方挂了,另一方能正常运行
channel.queue_declare(queue='hello')

number = random.randint(1, 1000)
body = 'hello world:%s' % number
# 交换机; 队列名,写明将消息发往哪个队列; 消息内容
# routing_key在使用匿名交换机的时候才需要指定,表示发送到哪个队列
channel.basic_publish(exchange='', routing_key='hello', body="liruixin")
print (" [x] Sent %s" % body)
connection.close()

  测试 收消息

import pika
import random

credentials = pika.PlainCredentials('liruixin', 'Gaosi')
connection = pika.BlockingConnection(pika.ConnectionParameters(host='39.15.98.72', port=5672, virtual_host='/', credentials=credentials))
channel = connection.channel()
# 声明一个队列,生产者和消费者都要声明一个相同的队列,用来防止万一某一方挂了,另一方能正常运行
channel.queue_declare(queue='hello')


def callback(ch, method, properties, body):
    print (body)

# 告诉rabbitmq使用callback来接收信息
channel.basic_consume('hello',callback, True)

# 开始接收信息,并进入阻塞状态,队列里有信息才会调用callback进行处理,按ctrl+c退出
print (' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

rabbitmq及其依赖环境

rabbitmq安装之前需要安装socat,否则直接安装rabbitmq可能会报错

如果没有找到,则先安装epel源  yum -y install epel-release

yum install socat

rabbitMQ需要和erlang的版本互相匹配具体查看rabbitMQ和对应的erlang版本匹配

在本文中,使用erlang-20.3.8.20-1.el7和rabbitmq-server-3.7.6-1.el7版本。

选择erlang-20.3.x可以兼容新的rabbitMQ3.7.x版本

安装erlang

使用rabbitMQ的镜像地址:https://github.com/rabbitmq/erlang-rpm

将下面内容复制到/etc/yum.repos.d/rabbitmq_erlang.repo文件中

保存后使用yum下载安装。

yum install erlang-版本号

版本号可以通过访问https://packagecloud.io/rabbitmq/erlang获取到要安装的对应版本。

复制代码
# In /etc/yum.repos.d/rabbitmq_erlang.repo
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
复制代码

在这里我是用版本为20.3.x这样就可以兼容两个mq的版本

yum install erlang-20.3.8.20-1.el7

rabbitMQ-server下载安装

使用脚本执行生成rabbitmq_rabbitmq-server.repo文件

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash

或者直接将下面内容复制到/etc/yum.repos.d/rabbitmq_rabbitmq-server.repo文件中

复制代码
[rabbitmq_rabbitmq-server]
name=rabbitmq_rabbitmq-server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_rabbitmq-server-source]
name=rabbitmq_rabbitmq-server-source
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
复制代码

yum下载安装

默认使用yum install rabbitmq-server是安装最新版本的rabbitmq

yum install rabbitmq-server-3.7.6-1.el7

rabbitmq安装完后,操作使用

复制代码
启动RabbitMQ服务
#service rabbitmq-server start
状态查看
#rabbitmqctl status
启用插件
#rabbitmq-plugins enable rabbitmq_management
重启服务
#service rabbitmq-server restart
添加帐号:name 密码:passwd
#rabbitmqctl add_user name passwd
赋予其administrator角色
#rabbitmqctl set_user_tags name administrator
设置权限
#rabbitmqctl set_permissions -p / name ".*" ".*" ".*"
复制代码

rabbit默认的web端口号是15672

访问http://ip:15672进入web管理页面了

注意放通外网访问,我的是腾讯云服务器,需要配置安全组策略,增加外部访问策略放通TCP:15672

测试:发消息

import pika
import random


credentials = pika.PlainCredentials('liruixin', 'Gaosi')

connection = pika.BlockingConnection(pika.ConnectionParameters(host='39.105.98.92', port=5672, virtual_host='/', credentials=credentials))

channel = connection.channel()


# 声明一个队列,生产者和消费者都要声明一个相同的队列,用来防止万一某一方挂了,另一方能正常运行
channel.queue_declare(queue='hello')

number = random.randint(1, 1000)
body = 'hello world:%s' % number
# 交换机; 队列名,写明将消息发往哪个队列; 消息内容
# routing_key在使用匿名交换机的时候才需要指定,表示发送到哪个队列
channel.basic_publish(exchange='', routing_key='hello', body="liruixin")
print (" [x] Sent %s" % body)
connection.close()

  测试 收消息

import pika
import random

credentials = pika.PlainCredentials('liruixin', 'Gaosi')
connection = pika.BlockingConnection(pika.ConnectionParameters(host='39.15.98.72', port=5672, virtual_host='/', credentials=credentials))
channel = connection.channel()
# 声明一个队列,生产者和消费者都要声明一个相同的队列,用来防止万一某一方挂了,另一方能正常运行
channel.queue_declare(queue='hello')


def callback(ch, method, properties, body):
    print (body)

# 告诉rabbitmq使用callback来接收信息
channel.basic_consume('hello',callback, True)

# 开始接收信息,并进入阻塞状态,队列里有信息才会调用callback进行处理,按ctrl+c退出
print (' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

猜你喜欢

转载自www.cnblogs.com/liruixin/p/12699975.html
今日推荐