【RabbitMQ】官方文档学习一

RabbitMQ Tutorials

link:

简介

  • RabbitMQ是一个消息代理,接收和转发消息。
  • 一些术语:
    • producer: 向队列投递消息的一方称为生产者
    • queue: 队列是RabbitMQ内部的中转站,尽管消息通过RabbitMQ在应用之间流转,但是只能被存储在队列中。队列仅受限于服务器的内存和磁盘大小,本质上就是一个大的消息缓冲区。多个生产者可以向同一个队列投递消息,多个消费者也可以从同一个队列拉取消息
    • consumer: 从队列拉取消息的一方称为消费者
    • 生产者、消费者、代理(服务端)可以分布在不同的机器上,事实上很多情况下都是分布在不同的地方

Hello World

  • 安装
    • 推荐使用docker安装,docker run -itd --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.7.18-management
  • 发送
# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'wAIxi'
__date__ = '2020/8/21'
__description__ = doc description
"""

import pika

connection = pika.BlockingConnection(
    pika.ConnectionParameters(
        host="localhost",
        credentials=pika.PlainCredentials(username="rxthinking", password="gniknihtxr")
    )
)
channel = connection.channel()
channel.queue_declare(queue='demo', auto_delete=True)
channel.basic_publish(exchange='', routing_key="demo", body="hello world")
connection.close()
  • 接收
# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'wAIxi'
__date__ = '2020/8/21'
__description__ = doc description
"""
import pika

connection = pika.BlockingConnection(
    pika.ConnectionParameters(
        host="localhost",
        credentials=pika.PlainCredentials(username="rxthinking", password="gniknihtxr")
    )
)
channel = connection.channel()
channel.queue_declare(queue='demo', auto_delete=True)


def callback(ch, method, props, body):
    print(f"get body: {body}")


channel.basic_consume(queue='demo', on_message_callback=callback, auto_ack=True)
channel.start_consuming()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值