国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python如何操作RabbitMQ實(shí)現(xiàn)fanout發(fā)布訂閱模式?有錄播直播私教課視頻教程

這篇具有很好參考價(jià)值的文章主要介紹了Python如何操作RabbitMQ實(shí)現(xiàn)fanout發(fā)布訂閱模式?有錄播直播私教課視頻教程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

fanout發(fā)布訂閱模式

基本用法

生產(chǎn)者

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)

# 隊(duì)列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 創(chuàng)建管道
channel = connection.channel()

# 聲明一個(gè)交換機(jī)
channel.exchange_declare(exchange=exchange_name, exchange_type=rabbitmq.ExchangeType.fanout)

# 向隊(duì)列中寫入數(shù)據(jù)
user = {"id": 1, "name": "張三", "age": 23}
message = json.dumps(user, ensure_ascii=True)
channel.basic_publish(
    exchange=exchange_name,
    routing_key=queue_name,  # 隊(duì)列名
    body=message.encode('utf8'),
    properties=rabbitmq.BasicProperties(delivery_mode=2),  # 聲明消息在隊(duì)列中持久化
)
print(message)

# 關(guān)閉連接
connection.close()

消費(fèi)者

import rabbitmq
import json

# 創(chuàng)建連接
credentials = rabbitmq.PlainCredentials(
    'zhangdapeng',
    'zhangdapeng520',
)
target = rabbitmq.ConnectionParameters(
    host='127.0.0.1',
    port=5672,
    virtual_host='/',
    credentials=credentials,
)
connection = rabbitmq.BlockingConnection(target)

# 創(chuàng)建管道
channel = connection.channel()

# 隊(duì)列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 綁定交換機(jī)
channel.exchange_declare(
    exchange=exchange_name,
    exchange_type=rabbitmq.ExchangeType.fanout,
)

# 綁定隊(duì)列
result = channel.queue_declare(
    queue=queue_name,
    exclusive=True,
)
channel.queue_bind(
    exchange=exchange_name,
    queue=queue_name,
)


def callback(ch, method, properties, body):
    """每次接收到消息的消費(fèi)回調(diào)方法"""
    ch.basic_ack(delivery_tag=method.delivery_tag)
    data = body.decode("utf8")
    print(json.loads(data))


# 開始消費(fèi)
channel.basic_consume(
    queue=queue_name,
    on_message_callback=callback,
    auto_ack=False,
)
try:
    channel.start_consuming()
finally:
    connection.close()

簡化代碼

生產(chǎn)者

import rabbitmq

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

# 隊(duì)列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 創(chuàng)建管道
channel = connection.channel()

# 聲明一個(gè)交換機(jī)
channel.exchange_declare(exchange=exchange_name, exchange_type=rabbitmq.ExchangeType.fanout)

# 向隊(duì)列中寫入數(shù)據(jù)
user = {"id": 1, "name": "張三", "age": 23}
rabbitmq.send_json(channel, user, exchange_name, queue_name)

# 關(guān)閉連接
connection.close()

消費(fèi)者

import rabbitmq
import json

# 創(chuàng)建連接
connection = rabbitmq.get_connection()

# 創(chuàng)建管道
channel = connection.channel()

# 隊(duì)列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 綁定交換機(jī)
channel.exchange_declare(
    exchange=exchange_name,
    exchange_type=rabbitmq.ExchangeType.fanout,
)

# 綁定隊(duì)列
result = channel.queue_declare(
    queue=queue_name,
    exclusive=True,
)
channel.queue_bind(
    exchange=exchange_name,
    queue=queue_name,
)


def callback(ch, method, properties, body):
    """每次接收到消息的消費(fèi)回調(diào)方法"""
    print(rabbitmq.receive_json(ch, method, body))


# 開始消費(fèi)
rabbitmq.consume(connection, queue_name, callback)

進(jìn)一步簡化代碼

生產(chǎn)者

import rabbitmq

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

# 隊(duì)列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 創(chuàng)建管道
channel = rabbitmq.get_fanout_channel(connection, exchange_name)

# 向隊(duì)列中寫入數(shù)據(jù)
user = {"id": 1, "name": "張三", "age": 23}
rabbitmq.send_json(channel, user, exchange_name, queue_name)

# 關(guān)閉連接
connection.close()

消費(fèi)者

import rabbitmq

# 創(chuàng)建連接
connection = rabbitmq.get_connection()

# 隊(duì)列信息
exchange_name = "user_manager_fanout"
queue_name = "user_manager_fanout"

# 創(chuàng)建管道
channel = rabbitmq.get_fanout_channel(connection, exchange_name, queue_name)


def callback(ch, method, properties, body):
    """每次接收到消息的消費(fèi)回調(diào)方法"""
    print(rabbitmq.receive_json(ch, method, body))


# 開始消費(fèi)
rabbitmq.consume(connection, queue_name, callback)

文章來源地址http://www.zghlxwxcb.cn/news/detail-798574.html

到了這里,關(guān)于Python如何操作RabbitMQ實(shí)現(xiàn)fanout發(fā)布訂閱模式?有錄播直播私教課視頻教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【RabbitMQ】golang客戶端教程3——發(fā)布訂閱(使用fanout交換器)

    【RabbitMQ】golang客戶端教程3——發(fā)布訂閱(使用fanout交換器)

    在上一個(gè)教程中,我們創(chuàng)建了一個(gè)工作隊(duì)列。工作隊(duì)列背后的假設(shè)是每個(gè)任務(wù)只傳遞給一個(gè)工人。在這一部分中,我們將做一些完全不同的事情——我們將向多個(gè)消費(fèi)者傳遞一個(gè)消息。這就是所謂的 “訂閱/發(fā)布模式” 。 為了說明這種模式,我們將構(gòu)建一個(gè)簡單的日志系統(tǒng)。

    2024年02月14日
    瀏覽(27)
  • RabbitMQ---訂閱模型-Fanout

    RabbitMQ---訂閱模型-Fanout

    Fanout,也稱為廣播。 流程圖: 在廣播模式下,消息發(fā)送流程是這樣的: 1) 可以有多個(gè)消費(fèi)者 2) 每個(gè)消費(fèi)者有自己的queue(隊(duì)列) 3) 每個(gè)隊(duì)列都要綁定到Exchange(交換機(jī)) 4) 生產(chǎn)者發(fā)送的消息,只能發(fā)送到交換機(jī),交換機(jī)來決定要發(fā)給哪個(gè)隊(duì)列,生產(chǎn)者無法決定。 5)

    2024年02月11日
    瀏覽(19)
  • RabbitMQ發(fā)布與訂閱模式類型

    RabbitMQ發(fā)布與訂閱模式類型

    ??博客主頁:??不會(huì)壓彎的小飛俠 ?歡迎關(guān)注:??點(diǎn)贊??收藏?留言? ?系列專欄:??Linux專欄 ??歡迎大佬指正,一起學(xué)習(xí)!一起加油! 工作隊(duì)列背后的假設(shè)是每個(gè)任務(wù)都是 只交付給一名工人。在這一部分中,我們將做一些事情 完全不同的 - 我們將向多個(gè)傳遞消息 消

    2024年02月02日
    瀏覽(22)
  • RabbitMQ入門案例之發(fā)布訂閱模式

    RabbitMQ入門案例之發(fā)布訂閱模式

    本文章主要介紹RabbitMQ的發(fā)布訂閱模式,該模式下,消息為廣播形式,一經(jīng)發(fā)布則會(huì)進(jìn)入交換機(jī)綁定的隊(duì)列中,詳細(xì)介紹可以閱讀官方文檔。 官網(wǎng)文檔地址:https://rabbitmq.com/getstarted.html RabbitMQ中的發(fā)布與訂閱模式是一種消息傳遞的方式,用于在分布式系統(tǒng)中傳遞消息。 在該模

    2024年02月09日
    瀏覽(27)
  • springboot rabbitmq 發(fā)布訂閱 廣播模式

    根據(jù)amqp協(xié)議、rabbitmq入門、springboot集成rabbitmq 可知,rabbitmq的廣播模式關(guān)鍵是使用fanout類型的exchange,fanout exchange會(huì)忽略message中的routing-key、queue中的binding-key,發(fā)給綁定exchange的全部queue。 實(shí)現(xiàn)發(fā)布訂閱(廣播模式)的關(guān)鍵在于對(duì)exchange類型的理解,可參考amqp協(xié)議、rabbitmq入門

    2024年02月02日
    瀏覽(25)
  • RabbitMQ 發(fā)布訂閱模式,routing路由模式,topic模式

    RabbitMQ 發(fā)布訂閱模式,routing路由模式,topic模式

    發(fā)布訂閱模式 一個(gè)消息可以由多個(gè)消費(fèi)者消費(fèi)同一個(gè)消息 ?消費(fèi)者1和2同時(shí)消費(fèi)了該消息 舉例 ?消費(fèi)者1和2同時(shí)消費(fèi)了該消息,比如說消息是發(fā)短信,發(fā)郵件,? 那么1和發(fā)短息? 2可以發(fā)郵件 routing路由模式 就是說哪些讓誰干 哪些讓誰干區(qū)分出來 也可以讓所有消費(fèi)者都消費(fèi) 選擇

    2024年02月02日
    瀏覽(23)
  • 【RabbitMQ四】——RabbitMQ發(fā)布訂閱模式(Publish/Subscribe)

    【RabbitMQ四】——RabbitMQ發(fā)布訂閱模式(Publish/Subscribe)

    通過本篇博客能夠簡單使用RabbitMQ的發(fā)布訂閱模式。 本篇博客主要是博主通過官網(wǎng)以及學(xué)習(xí)他人的博客總結(jié)出的RabbitMQ發(fā)布訂閱模式。其中如果有誤歡迎大家及時(shí)指正。 發(fā)布訂閱模式的核心是生產(chǎn)者生產(chǎn)的消息,其他消費(fèi)者都可以收到該生產(chǎn)者生產(chǎn)的消息。 由于發(fā)布訂閱模式

    2024年02月02日
    瀏覽(23)
  • RabbitMQ的Publish/Subscribe發(fā)布訂閱模式詳解

    RabbitMQ的Publish/Subscribe發(fā)布訂閱模式詳解

    各位小伙伴很久不見了,今兒又要給大家分享干貨了。我們知道RabbitMQ有簡單模式、工作隊(duì)列模式、發(fā)布訂閱模式、路由模式、主題模式、遠(yuǎn)程過程調(diào)用模式、發(fā)布者確認(rèn)模式等。這么多模式,你可能一下子很難全部吸收,今天袁老師主要給大家介紹發(fā)布訂閱模式Publish/Subsc

    2024年02月10日
    瀏覽(25)
  • Spring Boot整合RabbitMQ之發(fā)布與訂閱模式

    Spring Boot整合RabbitMQ之發(fā)布與訂閱模式

    RabbitMQ的模式中,常用的模式有:簡單模式,發(fā)布與訂閱模式,工作模式,路由模式,主題模式。簡單模式不太會(huì)運(yùn)用到工作中,我們可以使用 RabbitMQ 的發(fā)布訂閱模式,實(shí)現(xiàn): 用戶發(fā)布動(dòng)態(tài),其“粉絲”收到其發(fā)布動(dòng)態(tài)的消息 用戶下訂單,庫存模塊、支付模塊等收到消息并

    2024年02月12日
    瀏覽(23)
  • RabbitMQ的5種模式——再探RabbitMQ的模式,簡單、工作,發(fā)布訂閱(廣播),路由、主題 & 頁面分析

    RabbitMQ的5種模式——再探RabbitMQ的模式,簡單、工作,發(fā)布訂閱(廣播),路由、主題 & 頁面分析

    RabbitMQ作為一款常用的消息中間件,在微服務(wù)項(xiàng)目中得到大量應(yīng)用,其本身是微服務(wù)中的重點(diǎn)和難點(diǎn),有不少概念我自己的也是一知半解,本系列博客嘗試結(jié)合實(shí)際應(yīng)用場景闡述RabbitMQ的應(yīng)用,分析其為什么使用,并給出怎么用的案例。 本篇博客結(jié)合場景來闡述RabbitMQ的幾種模

    2024年02月07日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包