RabbitMQ基础_HelloWorld

RabbitMQ基础 Hello World!

部分内容参考:
金角大王等待唐僧的日子RabbitMQT部分内容
RabbitMQ官网文档
Ubuntu环境下 RabbitMQ安装 简单使用
windows环境下 RabbitMQ 安装

当前使用版本:python3.7

python不同版本,语法、参数名称、参数位置可能有变化,注意根据不同版本api调试即可。

基础

RabbitMQ是一个消息代理。它的核心原理非常简单:接收和发送消息。RabbitMQ将发送消息和接收消息进行解耦,由此来实现应用程序的异步处理。如果将RabbitMQ视为一个服务,从大方向来看,RabbitMQ做了三件事情:

  • 收取请求
  • 存储请求消息
  • 分发请求

引用官网原文,你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处。在这个比喻中,RabbitMQ就扮演着邮箱、邮局以及邮递员的角色。

名词解释

生产(Prouducing)意思就是发送,发送消息的应用程序就是一个(Prouducer),一般用“P”表示。
队列(Queue),生产者将消息发送给RabbitMQ,是指发送给RabbitMQ的一个队列。多个生产者可以同时给一个队列发送消息,同时多个消费者也可以同时从队列取消息。
**消费者(Consuming)**就是接收消息。一个消费者(Consumer)就是一个等待接收消息的应用程序

初次使用

如果用远端服务器上的rabbitmq,需要创建对应的用户和授权。
远程连接rabbitmq server的话,需要配置权限 噢

首先在rabbitmq server上创建一个用户
sudo rabbitmqctl  add_user xiaoxia xiaoxia  
同时还要配置权限,允许从外面访问
sudo rabbitmqctl set_permissions -p / xiaoxia ".*" ".*" ".*"

连接客户端的时候需要认证参数
credentials = pika.PlainCredentials('xiaoxia', 'xiaoxia')
connection = pika.BlockingConnection(pika.ConnectionParameters(
    '10.211.55.5',5672,'/',credentials))
channel = connection.channel()

send.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# -*- Author:砍柴少年
# -*- qq:335441537
import pika
credentials = pika.PlainCredentials('xiaoxia', 'xiaoxia')
# 获取连接
connection = pika.BlockingConnection(pika.ConnectionParameters(   
    '47.244.*.*', 5672, '/', credentials))
# 声明queue
channel = connection.channel()
# 声明queue
channel.queue_declare(queue='hello')
# n RabbitMQ a message can never be sent directly to the queue, it always needs to go through an exchange.
channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()
receive.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# -*- Author:砍柴少年
# -*- qq:335441537
import pika
credentials = pika.PlainCredentials('xiaoxia', 'xiaoxia')
connection = pika.BlockingConnection(pika.ConnectionParameters(
    '47.244.*.*', 5672, '/', credentials))
channel = connection.channel()
# You may ask why we declare the queue again ‒ we have already declared it in our previous code.
# We could avoid that if we were sure that the queue already exists. For example if send.py program
# was run before. But we're not yet sure which program to run first. In such cases it's a good
# practice to repeat declaring the queue in both programs.
channel.queue_declare(queue='hello')
def callback(ch, method, properties, body):
    print(" [x] Received %s" % body)
channel.basic_consume(queue='hello',
                      on_message_callback=callback,
                      auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

分析:?例子,运行N个receiver端,你会发现send一次后,N个receiver端只有一个会接收。每次send发送一次消息后,N个receiver会轮流有一个去接收消息数据。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、5资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ItJavawfc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值