NSQ在python中的实际应用

简介

NSQ是1个分布式(distributed)、可扩展(scalable)、配置简单(Ops Friendly)、可集成(integrated)、实时( realtime )的消息传递平台。即消息中间件。

可以将原本耦合、同步执行的程序 解耦成 生产端+ 消息队列+消费端模型的异步程序,加上分布式的生产者和消费者架构就可以在一定程度上支撑大并发。

NSQ是go语言开发的消息队列,它的设计目标是为在多台计算机上运行的松散服务提供一个现代化的基础设施骨架。

代码部署

nsq.Reader(message_handler=msg_hder.handle,
               lookupd_http_addresses=lookupd_http_address,
               topic=topic_name,           
               channel=channel_name, 
               max_in_flight=4,
               lookupd_poll_interval=15)

log_info("short_video_classifier_v3_increase init, nsq reader start.", lookupd_http_address,           topic_name, channel_name)
sys.stdout.flush()
 nsq.run()

message_handler

队列消费方式,通常是自定义的消息处理函数

Topic 和 Channel

1个topic具有1个或N个“channels”,所有的channels都会收到topic消息的副本,实际上topic是通过channel来消费它产生的消息的。

如果说topic是工厂,channel就是各种不同的销售渠道,那么生产者就是工人们,消费者就是来自许多不同渠道的客户们。

topic 由生产者端指定,channel由消费者端指定

topicchannel都相互独立地缓冲数据,防止缓慢的消费者导致其他chennel的积压(同样适用于topic级别)。

channel可以并且通常会连接多个客户端。假设所有连接的客户端都处于准备接收消息的状态,则每条消息将被传递到随机客户端。例如:

img

参考:

NSQ官方文档 https://nsq.io/components/nsqd.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值