RabbitMQ (九) 消息的参数详解

上篇文章讲了声明一个队列时的参数设置,这篇文章主要说一说发布消息时的参数设置.

发布消息时的完整入参是这样的:

channel.BasicPublish                        (                        exchange: "test_exchange",                        routingKey: "",                        mandatory: false,                        basicProperties: null,                        body: Encoding.Default.GetBytes(msg)                        );

exchange: 交换机名称

routingKey:路由键

路由键的设置跟交换机的类型有关.

  • 如果交换机的类型是"fanout",那么不管这个参数传入的是啥,哪怕是个空字符串(不能是null),也不管与这个交换机绑定的队列到底有没有设置路由键,设置的是什么.通通当它们不存在.所有绑定到该交换机的队列都会收到消息;

  • 如果交换机的类型是"direct"或者"topic",那么这个参数才有意义.

mandatory:

  • 当为true时,如果exchange根据自身类型和第2个参数(routeKey)无法找到一个符合条件的queue,那么会将消息返还给生产者;

  • 当为false时,出现上述情形broker会直接将消息扔掉.

测试:

生产者

public class Producer    {        private const string QueueName = "test_queue";        private const string ExchangeName = "test_exchange";        public static void Send()        {                     using (IConnection connection = ConnectionHelper.GetConnection())            using (IModel channel = connection.CreateModel())            {                channel.BasicQos(0, 1, false);channel.BasicReturn  = (s, e) =>                {                    byte[] bytes = e.Body;                    string str = Encoding.Default.GetString(bytes);                    Console.WriteLine("return message : "   str);                };string msg = "hello world ";                channel.BasicPublish                    (                    exchange: ExchangeName,                    routingKey: "找不到匹配的队列",                    mandatory: true,                    basicProperties: null,                    body: Encoding.Default.GetBytes(msg)                    );                Console.WriteLine($"send {msg}");            }        }    }

运行结果:

basicProperties:消息的基本属性

该参数是一个 IBasicProperties 类型的对象,具体有哪些属性,我们可以看源代码,不过我觉得通过管理后台来了解这些参数,更直观一些.

实在是有点多啊!

  • content_type 消息内容的类型,如 "application/json"

  • content_encoding 消息内容的编码格式

  • priority 消息的优先级,上面文章已经讲过了.

  • correlation_id 用于将RPC响应与请求相关联.

  • reply_to 回调队列

  • expiration 消息过期时间,单位毫秒.该参数值优先级>队列参数设置中的消息生存期

  • message_id 消息id

  • timestamp 消息的时间戳

  • type: 类型

  • user_id: 用户id

  • app_id: 应用程序id

  • cluster_id: 集群id

有两个属性,persistent 和 DeliveryMode ,它们的作用是一样的.

Persistent : true 表示消息持久化.当然,前提是队列也必须持久化.

管理后台可以直接设置 DeliveryMode :

来源:https://www.icode9.com/content-4-787201.html

(0)

相关推荐

  • C#队列学习笔记:RabbitMQ安装及使用

    一.环境搭建 1.1.由于RabbitMQ是使用Erlang语言开发的,因此要安装Erlang运行时环境,下载地址:Erlang官网下载  CSDN分享下载 1.2.去RabbitMQ官网下载Rabb ...

  • (1条消息) RabbitMQ六种通信模式介绍

    文章目录 一.简介 二.代码实现 三.程序运行效果 四.模式总结 一.简介 本篇博客所讲的为RabbitMQ六种通信模式之一的发布与订阅模式,官网给出的图如下所示: 简单模式与工作模式2个案例中,只有 ...

  • rabbitMq 学习笔记(一)

    消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 实现高性能,高可用,可伸缩和最终一致性架构. RabbitMQ 是采用 Erlang 语言实现 AMQP (Adva ...

  • 万字长文书写RabbitMQ最全见解!以后再也不用到处去搜索了呀!

    典型应用场景 1.跨系统的异步通信 人民银行二代支付系统,使用重量级消息队列 IBM MQ,异步,解耦,削峰都有体现. 2.应用内的同步变成异步 秒杀:自己发送给自己 3.基于Pub/Sub模型实现的 ...

  • (6条消息) OpenCV中的findContours函数参数详解

    OpenCV中的findContours函数参数详解 小白的进阶 2017-07-30 18:02:28 55008 收藏 303分类专栏:OpenCV 文章标签:opencvOpenCV中通过使用f ...

  • 电视选购12个重要参数详解,看完你就是专家,附:爆款推荐

    本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:白云上的鱼 创作立场声明:分享电视选购知识,重要参数详解,轻松搞定电视选购. 目前电视的选择太多太多了,品牌百花齐放琳琅满目,各种高科技加成 ...

  • 佳能g16说明书里的【参数详解】

    导语 :说到佳能g16,相信喜欢相机的朋友应该听说过它吧.它是佳能公司2013年推出的一款中低端数码相机,在上一代数码相机的基础上采用了最新的digic6影像处理系统,使得该型号相机的处理性能大幅度提 ...

  • @Scheduled注解各参数详解

    @Scheduled注解的使用这里不详细说明,直接对8个参数进行讲解. 参数详解 1. cron 该参数接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域, ...

  • 高考攻略| 中国史九大阶段特征详解,理解了秒懂历史(附电子版)

    很多童鞋抱怨历史难背,历史君告诉大家分类记忆更清晰哟!今天历史君给大家整理了一份中国历史的九大阶段特征,童鞋们快一起背起来吧! 一.中国古代文明的形成与发展 先秦.秦.先秦(远古-公元前221年)是中 ...

  • 商丘的高光时刻,商丘的十九大名门望族详解

    秦始皇一统天下,废除分封制,实行郡县制,设三十六郡,商丘属砀郡. 西汉时,汉高祖将砀郡改称梁国,属豫州. 三国时,商丘属梁郡. 唐玄宗时,置睢阳郡,属河南道. 北宋初,商丘属宋州:宋真宗时,升宋州为应 ...

  • 古代敦煌的九大名门望族详解

    战国至大秦时,敦煌一带居住着大月氏.乌孙人和塞种人. 战国末期,大月氏人赶走乌孙人.塞种人,独占敦煌直到秦末汉初. 西汉初年,匈奴人入侵河西,迫使月氏人西迁徙于两河流域,整个河西走廊为匈奴领地. 公元 ...

  • 如何控制线材的差分转共模参数详解

    随着USB4为代表的主流消费类Cable将带宽拉到40Gbps, 如今想要做好一条合格性能的Cable就越来越难,各种高频参数的设计和制造过程的控制都变得尤为重要,今天我们将目前反馈最多且最不容易通过 ...

  • (10条消息) PID控制详解

    PID控制详解 一.PID控制简介 PID( Proportional Integral Derivative)控制是最早发展起来的控制策略之一,由于其算法简单.鲁棒性好和可靠性高,被广泛应用于工业过 ...