nameko 是一个服务一个 amqp 连接,还是每个队列 work 函数一个 amqp 连接?

敏捷侠
• 阅读 720
class AddService:
    name = 'add_service'

    @event_handler('productor_service', 'a')
    @event_handler('productor_service', 'b')
    def handle_message(self, payload: str):
        logger.debug(f'handle_message {payload}')

    @rpc
    @context_id_dec
    def add(self, a: int, b: int, /, context_id: str) -> int | None:
        try:

            logger.debug(f'收到一个加法计算请求:{a},{b},{asgi_context_id.get()}')
            # time.sleep(1000)
            return a+b
        except Exception as error:
            logger.exception(error)
            return None

    @http('GET', '/hi')
    def hi(self, request):
        return "hello world"

    @http('GET', '/ha')
    def ha(self, request):
        time.sleep(10)
        return 'ok'

nameko run services:AddService --config ./config.yaml 使用该命令,发现只有一个连接:

nameko 是一个服务一个 amqp 连接,还是每个队列 work 函数一个 amqp 连接?

class TrashCanService:
    name = 'trash_scan_service'

    @event_handler('hi_api', 'rubbish')
    def receive(self, message: str):
        logger.debug(f'开始消费消息, {message}')
        response = requests.get('http://127.0.0.1:50010')
        logger.debug(f'{message}, {response.text}')

    receive.create_queue_only = True

    @event_handler('drop_throw_rubbish_service', 'drop_rubbish')
    def receive_by_rpc(self, message: str):
        pass


class AddService:
    name = 'add_service'

    @event_handler('productor_service', 'a')
    @event_handler('productor_service', 'b')
    def handle_message(self, payload: str):
        logger.debug(f'handle_message {payload}')

    @rpc
    @context_id_dec
    def add(self, a: int, b: int, /, context_id: str) -> int | None:
        try:

            logger.debug(f'收到一个加法计算请求:{a},{b},{asgi_context_id.get()}')
            # time.sleep(1000)
            return a+b
        except Exception as error:
            logger.exception(error)
            return None

    @http('GET', '/hi')
    def hi(self, request):
        return "hello world"

    @http('GET', '/ha')
    def ha(self, request):
        time.sleep(10)
        return 'ok'

但是这样,两个服务,一共两个 amqp 连接:

nameko 是一个服务一个 amqp 连接,还是每个队列 work 函数一个 amqp 连接?

所以 nameko 是一个服务一个 amqp 连接,还是每个队列 work 函数一个 amqp 连接? 这个问题的结论就是:nameko 是一个服务一个 amqp 连接

点赞
收藏
评论区
推荐文章
ActiveMQ学习笔记01 - 客户端与服务器之间的传输连接 - 转载自CSDN博客
本文转自,如有侵权,请联系删除。ActiveMQ的cilenttobroker的连接,叫做传输连接(Transportconnectors),brokertobroker间的连接,叫做网络连接(Networkconnectors)。ActiveMQ支持许多种客户端与服务器的传输连接。分别是TCP,NIO,UDP,SSL,HTTP(S),VM,AMQP,
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
RabbitMQ使用场景
AMQPAMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现。它主要包括以下组件:!(https://oscimg.oschina.net/oscnet/4eea8d68796a038f27fdc5945546a544f9d.png)1.Server(broker): 接受客户端连接,实现AMQP消息队列和路
Stella981 Stella981
3年前
RabbitMQ_消息队列基本使用_2
简介RabbitMQ:接受消息再传递消息,可以视为一个“邮局”。发送者和接受者通过队列来进行交互,队列的大小可以视为无限的,多个发送者可以发生给一个队列,多个接收者也可以从一个队列中接受消息。pika&使用rabbitmq使用的协议是amqp,用于python的推荐客户端是pikapipinstallpika
Stella981 Stella981
3年前
Spring RabbitMQ Channel理解
概述在AMQP协议中,有channel的概念,在RabbitMq中,channel表示逻辑连接或者叫虚拟连接,是棣属于TCP连接的。一个TCP连接里可以创建多个channel,在RabbitMQ里,消息的发送和接收都是基于channel的。!collection和channel的关系(htt
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
AvctiveMQ和RabbitMQ的区别
ActiveMQ:传统的消息队列,使用Java语言编写。基于JMS(JavaMessageService),采用多线程并发,资源消耗比较大。支持P2P和发布订阅两种模式。RabbitMQ:是使用Erlang语言开发的开源消息队列系统。基于AMQP协议来实现的。AMQP的主要特征是面向消息、队列、路由(
Wesley13 Wesley13
3年前
1.Rabbitmq学习记录《本质介绍,协议AMQP分析》
1.RabbitMQ是一个由erlang开发的AMQP(AdvancedMessageQueue)的开源实现。 RabbitMQ的优势:         除了Qpid,RabbitMQ是唯一一个实现了AMQP标准的消息服务器;         可靠性,RabbitMQ的持久化支持,保证了消息的稳定性;
Stella981 Stella981
3年前
RabbitMQ 基础概念介绍
AMQP消息模型RabbitMQ是基于AMQP(高级消息队列协议)的一个开源实现,其内部实际也是AMQP的基本概念。AMQP的消息发送流程有如下几个步骤:1.消息生产者(producer)将消息发布到Exchange中;2.Exchange根据队列的绑定关系将消息分发到不同的队列(Queue
Stella981 Stella981
3年前
39、chen框架
由于后台使用了chen框架,所以代码不能完全列出,可以到http://git.oschina.net/eternal\_rider/chen(http://git.oschina.net/eternal_rider/chen)下载项目,运行后,即可看到菜单效果级管理。示例框架中写了一个jquery菜单插件实现,可以使用存html代码样式
Stella981 Stella981
3年前
RabbitMQ基础概念详细介绍
RabbitMQ简介AMQP,即AdvancedMessageQueuingProtocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。R
敏捷侠
敏捷侠
Lv1
若是你一贫如洗我能不能是你的最后行李
文章
8
粉丝
0
获赞
0