RabbitMQ服务客户端的的业务逻辑

RabbitMQ入门(一)——RabbitMQ的安装以及使用(Windows环境下) 一、RabbitMQ介绍 1、RabbitMQ简介 RabbitMQ是一个消息代理:它接受和转发消息。你可以把它想象成一个邮局:当你把你想要发布的邮件放在邮箱中时,你可以确定邮差先生最终将邮件发送给你的收件人。在这个比喻中,RabbitMQ是邮政信箱,邮局和邮递员。 RabbitMQ和邮局的主要区别在于它不处理纸张,而是接受,存储和转发二进制数据块 - 消息。引自(https://www... 阅读详情
 RabbitMQ服务客户端的的业务逻辑如下:

    1,打开 socket:
     amqp_new_connection();
     amqp_open_socket(hostname, port);
    
    2,用户登陆:

    amqp_set_sockfd(conn, sockfd);
    amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, userName, password);

    3,打开channel
    amqp_channel_open(conn, 1);
    amqp_get_rpc_reply(conn);

    4,声明 Exchange

    amqp_exchange_declare(conn, 1, amqp_cstring_bytes(exchange), amqp_cstring_bytes("fanout"),
                          0, 0, amqp_empty_table);

    5,声明Queue
    amqp_queue_declare_ok_t *r = amqp_queue_declare(conn, 1, amqp_cstring_bytes(queue), 0, 0, 0, 1,amqp_empty_table);


    6,将Queue和Exchange进行binding

    amqp_queue_bind(conn, 1,
                    queuename,
                    amqp_cstring_bytes(exchange),
                    amqp_cstring_bytes(bindingkey),
                    amqp_empty_table);

    注意:binding动作在程序中只能执行一次,如果第二次再执行,程序会crash!
    

    7,操作,包括 发送(publish),接收(consume)等。

        发送:

            amqp_basic_publish(conn,
                           1,
                           amqp_cstring_bytes(exchange),
                           amqp_cstring_bytes(routingkey),
                           0,
                           0,
                           NULL,
                           amqp_cstring_bytes(messagebody));


        接收:
            amqp_basic_consume(conn, 1,queuename, amqp_empty_bytes, 0, 1, 0, amqp_empty_table);

         amqp_maybe_release_buffers(conn);

    此处应该注意:接受的过程是一个阻塞的异步过程,所以必须在子线程中进行操作,这样就不会影响主线程中的UI操作,所以在以前使用的block编程就用了很大的用武之地,一方面,通过block多核编程提高程序的运行效率,第二方面,异步的dispatch能够完美的解决阻塞的问题,并且可以使处理后返回的数据直接在OC类中直接使用,从而规避了在C函数中传递OC的指针来对OC的对象进行的操作,真是一劳永逸的好方法,推荐大家使用。

    8,进行unbinding

           amqp_queue_unbind(conn, 1,
                      queuename,
                      amqp_cstring_bytes(exchange),
                      amqp_cstring_bytes(bindingkey),
                      amqp_empty_table);

    9,关闭channel
        
            amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS);


    10,关闭 connection连接。

    // Closing connection
    amqp_connection_close(conn, AMQP_REPLY_SUCCESS);
    
    //Ending connection
    amqp_destroy_connection(conn);

《微服务分布式构架开发实战》第19章 分布式架构总结 第19章 分布式架构总结 目前已经介绍了基于Dubbo与Spring Cloud框架构建的分布式微服务应用,并且基于Spring Boot Starter集成的第三方工具解决了项目中遇见的绝大部分需求,现在将这些全部整合起来,绘制出完整的架构图谱以便于更加清晰地理解各工具之间的关系。 注册中心 无论是Dubbo的Zookeeper还是Spring Cloud的Eureka都负责所有服务模... 阅读详情

相关推荐

在Linux系统中使用RabbitMQ-C客户端

本文还有配套的精品资源,点击获取 简介:RabbitMQ-C是一个用于Linux系统的C语言客户端库,版本为0.5.2。它基于AMQP协议,提供异步通信解决方案。本文首先解释了RabbitMQ-C库如何让开发者通过C语言实现多种消息模式与RabbitMQ服务器交互。接着,介绍了如何在Linux系统上安装并使用rabbitmq-c-0.5.2,包括安装依赖、编译安装步骤和基本...

weixin_42515392的博客 1483

RabbitMQ(一)publish消息确认

Confirms (aka Publisher Acknowledgements) Using standard AMQP, the only way to guarantee that a message isn't lost is by using transactions -- make the channel transactional, publish the message,

很多时候,你缺少的不是知识而是热情 3万+

RabbitMQ源码和客户端工具

RabbitMQ源码和客户端工具RabbitMQ源码和客户端工具

消息队列rabbitmq的使用

前提条件:环境安装amqp和安装rabbitmq。

码农从0到1 461

rabbitmq的接口函数说明,api参数使用说明

rabbitmq的提供的各个接口函数使用说明,函数有 1、amqp_new_connection(声明一个新的connection) 2、amqp_open_socket(获取socket) 3、amqp_set_sockfd(将connection和sockfd进行绑定) 4、amqp_login(用于登录RabbitMQ server,主要目的为了进行权限管理) 5、amqp_channel_open(用于关联conn和channel) 6、amqp_exchange_declare(声明exchange) 7、amqp_queue_declare(声明queue) 8、amqp_queue_bind(声明binding,已经有的绑定直接返回,没有绑定的就会绑定) 9、amqp_basic_qos(控制预取消息数) 10、amqp_basic_consume(指定要接收的队列) 11、amqp_consume_message(接收数据) 12、int amqp_basic_ack(发送ask确认) 13、amqp_basic_reject(拒绝ask) 14、amqp_basic_publish(发布消息) 15、amqp_simple_wait_frame(回调等待服务器的结果返回) 16、amqp_basic_get(客户端主动获取服务器的下一条消息) 17、关闭 18、AE交换机的使用 19、死信交换机的使用

Altium Designer差分走线实战:从规则设置到阻抗匹配的完整流程

本文详细讲解了在Altium Designer中进行差分走线的完整实战流程,涵盖从原理图定义差分对、PCB布局管理、关键设计规则设置,到利用阻抗计算工具确定线宽与间距,以及布线技巧与等长处理等核心步骤。文章旨在帮助工程师掌握高速PCB设计中差分信号传输的关键技术,确保信号完整性并实现精确的阻抗匹配。

weixin_29163857的博客 254

Rabbitmq-C 的简单使用(一) -- 准备工作和一个demo

https://blog.youkuaiyun.com/qq_17812167/article/details/75557115 参考此篇文章可以使用cmake编译出 lib文件和dll文件 https://blog.youkuaiyun.com/weixin_42148156/article/details/108534941#comments_14303134 这篇是我自己使用mqtt客户端写的,里面有使用cmake的步骤 上班排查公司的bug,最后发现是客户端接收mq的错误,还是别的同事帮忙检查的...

lizequan的博客 5673

微腔光频梳仿真入门:MATLAB求解LLE方程全流程解析

光学频率梳在精密测量、光通信和微波光子学中有着广阔应用,而微环谐振腔中的Kerr非线性与四波混频效应能够紧凑地产生宽带梳齿。仿真这类系统的核心是求解Lugiato-Lefever方程(LLE),但直接从物理参数到数值代码往往让初学者无从下手。本文从微腔光频梳的物理图像出发,介绍LLE方程的推导与归一化方法,并重点讲解MATLAB数值实现的两种思路:基于ode45的频域耦合方程组求解与分裂步长RK4IP方法。同时讨论失谐扫描、孤子态识别、参数稳定性边界,以及如何将真实器件参数换算为无量纲仿真参数。无论你是刚接

weixin_32325225的博客 291

rabbitmq的接口函数使用说明

rabbitmq的提供的各个接口函数使用说明,函数有 1、amqp_new_connection(声明一个新的connection) 2、amqp_open_socket(获取socket) 3、amqp_set_sockfd(将connection和sockfd进行绑定) 4、amqp_login(用于登录RabbitMQ server,主要目的为了进行权限管理) 5、amqp_channel_open(用于关联conn和channel) 6、amqp_exchange_declare(声明exchang

weixin_44353800的博客 848

e-puck场景搭建

可以注意到一个黑色的小窗口出现在三维视图的左上角。它显示了电子吸盘机器人的摄像头拍摄的图像。该图像将保持黑色,直到机器人的控制器明确启用相机。最后,单击右上角的“x”可以关闭它。在对话框中,选择PROTO节点(Webots项目)/robots/gctronic/e-puck/e-puck(Robot)。一个电子吸盘机器人应该出现在竞技场的中央。通过按Alt+左键单击+拖动,对机器人施加力。无法对WoodenBox节点施加力,因为默认情况下,它们没有质量,并且被视为粘在地板上。将新控制器与机器人链接。

weixin_66540163的博客 765

100天精通Python(可视化篇)——第109天:Pyecharts绘制各种常用地图(参数说明+代码实战)

100天精通Python(可视化篇)——第109天:Pyecharts绘制各种常用地图(参数说明+代码实战)

努力让自己发光,对的人才能迎着光而来 8万+

RabbitMQ 客户端 连接、发送、接收处理消息

(3) 如果 RabbitMQ 服务收到消息,就转发给 注册接收消息接口的 连接,如果接收的连接标记了 AutoDelete,那么发送给客户端后,RabbitMQ 就会将消息从消息队列中删除。而 RabbitMQ 的消费消息(接收消息) 也仅仅是接收消息,它不管是谁发的消息,只要是发送的 RabbitMQ 服务的消息,它都能接收,注册接收消息,我的客户端就会收到 RabbitMQ 发送过来的消息,消息中包含发送上来的消息内容,还有发送消息的 queue 名字。

2509_94089977的博客 805

YOLO26改进 - C3k2 | C3k2 融合 ARConv 自适应矩形卷积:动态调整卷积核形状与采样点 | CVPR 2025

本文介绍了将自适应矩形卷积(ARConv)模块与YOLO26相结合的方法。ARConv是针对遥感图像全色锐化任务设计的创新卷积模块,可自适应调整卷积核形状与采样点数量,解决传统卷积刚性限制,实现高效特征提取。其工作流程包括学习卷积核高度和宽度、选择采样点数量、生成采样图、卷积实现与空间自适应增强。我们将集成ARConv的C3k2_ARConv模块引入YOLO26,对相关代码进行修改和注册,并配置了YOLO26 - C3k2_ARConv.yaml文件。实验脚本显示,该结合方式应用于目标检测任务。

魔改工程师的博客 496

消息中间件RabbitMQ(五)——实现RPC调用

消息中间件RabbitMQ(五)——实现RPC调用

scorpio的博客 4787

《大数据最全面试题-Offer直通车》目录

做好这些不用担心试用期不通过:程序员入职新公司如何快速上手项目本人遇到大数据面试题和参考答案(超过1万字精华版)大数据面试英文自我介绍参考(万字长文)大数据运维应用场景面试题汇总及参考答案(持续更新)万字数据仓库面试题及参考答案数据仓库数据质量监控和处理方法最佳实践数据仓库建模方法万字详解Doris的3种数据模型详解和数据仓库每一层的模型选用大数据面试临阵磨枪不知看什么?看这份心理就有底了-大数据常用技术栈常见面试100道题最全Hive面试题2024年(2万字详解)Elasticsearch 面试题及参考答

大模型大数据攻城狮的专栏 2633

【深度学习新浪潮】算力上太空:NVIDIA Space-1 Vera Rubin Module 深度技术解析

NVIDIA Space-1 Vera Rubin Module 不只是一款芯片模组,它是天地一体化 AI 的基础设施底座。它用成熟的 GPU 架构 + 航天级加固,把地面 AI 生态直接平移到太空。下一个 AI 创新战场,不在云端,而在轨道。在轨 LLM星上多模态实时处理卫星自主组网与分布式推理太空算力成为云计算的一级节点参考资料NVIDIA 官方博客:NVIDIA 推出太空计算,将 AI 送入太空轨道GTC 2026 黄仁勋主题演讲。

专注:太空算力、AI infra、异构调度、大模型成本工程 1124

中间件系列八 RabbitMQ之实现RPC模式

概述本文使用RabbitMQ实现RPC的调用方式,主要包括如下内容: 回调队列(Callback queue) RPC调用相关的消息参数:replyTo和correlationId RPC调用的客户端和服务端的demo代码 本文实现功能说明本文使用RabbitMQ实现RPC的调用方式,我们需要使用新的队列:回调队列(Callback queue)RPC需要涉及消息的两个重要属性: replyTo:

不积跬步无以至千里; 不积小流无以成江海 6292

人工智能智能体研究综述:从理论架构到前沿应用

AI Agent,即人工智能智能体,是指能够在特定环境中自主感知、推理、决策并执行行动以实现特定目标的智能系统[1]。自主性反应性主动性(Pro-activeness)和社会性fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;AI Agent核心特征自主性 Autonomy反应性 Reactivity主动性 Pro-activeness。

nmdbbzcl的博客 902

2.RABBITMQ 入门 - WINDOWS - 生产和消费消息 一个完整案例

关于安装和配置,见上一篇1.RABBITMQ 入门 - WINDOWS - 获取,安装,配置 公司有需求,要求使用winform开发这个东西(消息中间件),另外还要求开发一个日志中间件,但是也是要求做成win form的,这明显不合理,因为之前,服务器上我已经放置了一个 短信的winform的服务。那么到后期的话,登录服务器之后,全是 一个个的窗体挂在那儿,这明显合不合常理,但是领导要求这...

weixin_30905133的博客 217

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 解决ubuntu下软件包没有完整安装导致新立得无法打开
下一篇: Eclipse中10个最有用的快捷键组合
锜锜
博客等级 码龄18年 6粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值