Python如何操作RabbitMQ实现fanout发布订阅模式?有录播直播私教课视频教程

这篇具有很好参考价值的文章主要介绍了Python如何操作RabbitMQ实现fanout发布订阅模式?有录播直播私教课视频教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

fanout发布订阅模式

基本用法

生产者

import json
import rabbitmq

# 建立连接
credentials = rabbitmq.PlainCredentials(
    'zhangdapeng',
    'zhangdapeng520',
)  # mq用户名和密码
connection_target = rabbitmq.ConnectionParameters(
    host='127.0.0.1',
    port=5672,
    virtual_host='/',
    credentials=credentials,
)
connection = rabbitmq.BlockingConnection(connection_target)

# 队列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 创建管道
channel = connection.channel()

# 声明一个交换机
channel.exchange_declare(exchange=exchange_name, exchange_type=rabbitmq.ExchangeType.fanout)

# 向队列中写入数据
user = {"id": 1, "name": "张三", "age": 23}
message = json.dumps(user, ensure_ascii=True)
channel.basic_publish(
    exchange=exchange_name,
    routing_key=queue_name,  # 队列名
    body=message.encode('utf8'),
    properties=rabbitmq.BasicProperties(delivery_mode=2),  # 声明消息在队列中持久化
)
print(message)

# 关闭连接
connection.close()

消费者

import rabbitmq
import json

# 创建连接
credentials = rabbitmq.PlainCredentials(
    'zhangdapeng',
    'zhangdapeng520',
)
target = rabbitmq.ConnectionParameters(
    host='127.0.0.1',
    port=5672,
    virtual_host='/',
    credentials=credentials,
)
connection = rabbitmq.BlockingConnection(target)

# 创建管道
channel = connection.channel()

# 队列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 绑定交换机
channel.exchange_declare(
    exchange=exchange_name,
    exchange_type=rabbitmq.ExchangeType.fanout,
)

# 绑定队列
result = channel.queue_declare(
    queue=queue_name,
    exclusive=True,
)
channel.queue_bind(
    exchange=exchange_name,
    queue=queue_name,
)


def callback(ch, method, properties, body):
    """每次接收到消息的消费回调方法"""
    ch.basic_ack(delivery_tag=method.delivery_tag)
    data = body.decode("utf8")
    print(json.loads(data))


# 开始消费
channel.basic_consume(
    queue=queue_name,
    on_message_callback=callback,
    auto_ack=False,
)
try:
    channel.start_consuming()
finally:
    connection.close()

简化代码

生产者

import rabbitmq

# 建立连接
connection = rabbitmq.get_connection()

# 队列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 创建管道
channel = connection.channel()

# 声明一个交换机
channel.exchange_declare(exchange=exchange_name, exchange_type=rabbitmq.ExchangeType.fanout)

# 向队列中写入数据
user = {"id": 1, "name": "张三", "age": 23}
rabbitmq.send_json(channel, user, exchange_name, queue_name)

# 关闭连接
connection.close()

消费者

import rabbitmq
import json

# 创建连接
connection = rabbitmq.get_connection()

# 创建管道
channel = connection.channel()

# 队列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 绑定交换机
channel.exchange_declare(
    exchange=exchange_name,
    exchange_type=rabbitmq.ExchangeType.fanout,
)

# 绑定队列
result = channel.queue_declare(
    queue=queue_name,
    exclusive=True,
)
channel.queue_bind(
    exchange=exchange_name,
    queue=queue_name,
)


def callback(ch, method, properties, body):
    """每次接收到消息的消费回调方法"""
    print(rabbitmq.receive_json(ch, method, body))


# 开始消费
rabbitmq.consume(connection, queue_name, callback)

进一步简化代码

生产者

import rabbitmq

# 建立连接
connection = rabbitmq.get_connection()

# 队列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 创建管道
channel = rabbitmq.get_fanout_channel(connection, exchange_name)

# 向队列中写入数据
user = {"id": 1, "name": "张三", "age": 23}
rabbitmq.send_json(channel, user, exchange_name, queue_name)

# 关闭连接
connection.close()

消费者

import rabbitmq

# 创建连接
connection = rabbitmq.get_connection()

# 队列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 创建管道
channel = rabbitmq.get_fanout_channel(connection, exchange_name, queue_name)


def callback(ch, method, properties, body):
    """每次接收到消息的消费回调方法"""
    print(rabbitmq.receive_json(ch, method, body))


# 开始消费
rabbitmq.consume(connection, queue_name, callback)

文章来源地址https://www.toymoban.com/news/detail-798574.html

到了这里,关于Python如何操作RabbitMQ实现fanout发布订阅模式?有录播直播私教课视频教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【RabbitMQ】golang客户端教程3——发布订阅(使用fanout交换器)

    在上一个教程中,我们创建了一个工作队列。工作队列背后的假设是每个任务只传递给一个工人。在这一部分中,我们将做一些完全不同的事情——我们将向多个消费者传递一个消息。这就是所谓的 “订阅/发布模式” 。 为了说明这种模式,我们将构建一个简单的日志系统。

    2024年02月14日
    浏览(41)
  • RabbitMQ---订阅模型-Fanout

    Fanout,也称为广播。 流程图: 在广播模式下,消息发送流程是这样的: 1) 可以有多个消费者 2) 每个消费者有自己的queue(队列) 3) 每个队列都要绑定到Exchange(交换机) 4) 生产者发送的消息,只能发送到交换机,交换机来决定要发给哪个队列,生产者无法决定。 5)

    2024年02月11日
    浏览(49)
  • RabbitMQ发布与订阅模式类型

    🍁博客主页:👉不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉Linux专栏 🔥欢迎大佬指正,一起学习!一起加油! 工作队列背后的假设是每个任务都是 只交付给一名工人。在这一部分中,我们将做一些事情 完全不同的 - 我们将向多个传递消息 消

    2024年02月02日
    浏览(42)
  • springboot rabbitmq 发布订阅 广播模式

    根据amqp协议、rabbitmq入门、springboot集成rabbitmq 可知,rabbitmq的广播模式关键是使用fanout类型的exchange,fanout exchange会忽略message中的routing-key、queue中的binding-key,发给绑定exchange的全部queue。 实现发布订阅(广播模式)的关键在于对exchange类型的理解,可参考amqp协议、rabbitmq入门

    2024年02月02日
    浏览(39)
  • RabbitMQ入门案例之发布订阅模式

    本文章主要介绍RabbitMQ的发布订阅模式,该模式下,消息为广播形式,一经发布则会进入交换机绑定的队列中,详细介绍可以阅读官方文档。 官网文档地址:https://rabbitmq.com/getstarted.html RabbitMQ中的发布与订阅模式是一种消息传递的方式,用于在分布式系统中传递消息。 在该模

    2024年02月09日
    浏览(56)
  • RabbitMQ 发布订阅模式,routing路由模式,topic模式

    发布订阅模式 一个消息可以由多个消费者消费同一个消息  消费者1和2同时消费了该消息 举例  消费者1和2同时消费了该消息,比如说消息是发短信,发邮件,  那么1和发短息  2可以发邮件 routing路由模式 就是说哪些让谁干 哪些让谁干区分出来 也可以让所有消费者都消费 选择

    2024年02月02日
    浏览(52)
  • 【RabbitMQ四】——RabbitMQ发布订阅模式(Publish/Subscribe)

    通过本篇博客能够简单使用RabbitMQ的发布订阅模式。 本篇博客主要是博主通过官网以及学习他人的博客总结出的RabbitMQ发布订阅模式。其中如果有误欢迎大家及时指正。 发布订阅模式的核心是生产者生产的消息,其他消费者都可以收到该生产者生产的消息。 由于发布订阅模式

    2024年02月02日
    浏览(34)
  • RabbitMQ的Publish/Subscribe发布订阅模式详解

    各位小伙伴很久不见了,今儿又要给大家分享干货了。我们知道RabbitMQ有简单模式、工作队列模式、发布订阅模式、路由模式、主题模式、远程过程调用模式、发布者确认模式等。这么多模式,你可能一下子很难全部吸收,今天袁老师主要给大家介绍发布订阅模式Publish/Subsc

    2024年02月10日
    浏览(47)
  • Spring Boot整合RabbitMQ之发布与订阅模式

    RabbitMQ的模式中,常用的模式有:简单模式,发布与订阅模式,工作模式,路由模式,主题模式。简单模式不太会运用到工作中,我们可以使用 RabbitMQ 的发布订阅模式,实现: 用户发布动态,其“粉丝”收到其发布动态的消息 用户下订单,库存模块、支付模块等收到消息并

    2024年02月12日
    浏览(40)
  • RabbitMQ的5种模式——再探RabbitMQ的模式,简单、工作,发布订阅(广播),路由、主题 & 页面分析

    RabbitMQ作为一款常用的消息中间件,在微服务项目中得到大量应用,其本身是微服务中的重点和难点,有不少概念我自己的也是一知半解,本系列博客尝试结合实际应用场景阐述RabbitMQ的应用,分析其为什么使用,并给出怎么用的案例。 本篇博客结合场景来阐述RabbitMQ的几种模

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包