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

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

                    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 :

RabbitMQ (九) 消息的参数详解的更多相关文章

  1. RabbitMQ (八) 队列的参数详解

    代码中,我们通常这样声明一个队列: //声明队列 channel.QueueDeclare ( queue: QueueName, //队列名称 durable: false, //队列是否持久化.f ...

  2. Nginx主配置参数详解,Nginx配置网站

    1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...

  3. mysqldump的常用语句及各参数详解

    mysqldump的常用语句及各参数详解 分类: MySQL 2011-01-11 17:55 1368人阅读 评论(0) 收藏 举报 数据库mysql服务器tableinsertdatabase m ...

  4. Android 颜色渲染(九) PorterDuff及Xfermode详解

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色渲染(九)  PorterDuff及Xfermode详解 之前已经讲过了除ComposeShader之外Shader的全部子类 ...

  5. Nginx 主配置文件参数详解

    Nginx 主配置文件参数详解 Nginx 安装完毕后,会有响应的安装目录,安装目录里 nginx.conf 为 nginx 的主配置文件, ginx 主配置文件分为 4 部分,main(全局配置). ...

  6. reids配置参数详解

    转自:http://www.jb51.net/article/60627.htm reids配置参数详解 #daemonize no  默认情况下, redis 不是在后台运行的,如果需要在后台运行, ...

  7. iOS的消息转发机制详解

    iOS开发过程中,有一类的错误会经常遇到,就是找不到所调用的方法,当然这类问题比较好解决,给当前对象或其父类对象添加该方法即可,使得编译器在编译时能正确找到该方法:或者,还有另外的方法,由于Objec ...

  8. 以太坊客户端Geth命令用法-参数详解

    Geth在以太坊智能合约开发中最常用的工具(必备开发工具),一个多用途的命令行工具. 熟悉Geth可以让我们有更好的效率,大家可收藏起来作为Geth命令用法手册. 本文主要是对geth help的翻译 ...

  9. tcpdump常用参数详解

    tcpdump常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 好久没有更新我的博客了,看来自己最近还没有在放假中回过神来啊,哈哈~是不是也有小伙伴跟我一样呢?回归正题, ...

随机推荐

  1. 优雅退出telnet

    echo "" |telnet IP 端口

  2. 【poj1222-又一道开关问题】高斯消元求解异或方程组

    题意:给出一个5*6的图,每个灯泡有一个初始状态,1表示亮,0表示灭.每对一个灯泡操作时,会影响周围的灯泡改变亮灭,问如何操作可以使得所有灯泡都关掉. 题解: 这题和上一题几乎完全一样..就是要输出解 ...

  3. 【vijos】P1083 小白逛公园

    [算法]线段树 [题解] 学自:https://vijos.org/p/1083/solution(wang_yanheng的回答) 回溯时维护一段区间的以下域: sumL:从左端点起连续区间的最大和 ...

  4. python3中字典的遍历和合并

    #字典的遍历方式 dic={"a":1,"b":2,"c":3} for k in dic: print (k,dic[k]) for k, ...

  5. fileinput 小计(显示历史上传图片)

    今天又需要,要求在选中某条记录后显示历史上传图片 上传控件是fileinput.js 想法:界面有上传图片的控件,重新加载控件,并加入历史上传图片地址 实现代码: var filepathArray ...

  6. hdu 4190 Distributing Ballot Boxes(贪心+二分查找)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4190 Distributing Ballot Boxes Time Limit: 20000/1000 ...

  7. YUV颜色编码解析(转)

    原文转自 https://www.jianshu.com/p/a91502c00fb0

  8. Laravel 5.2 三、中间件、视图与 Blade 模板引擎

    一.中间件 Laravel 的 HTTP 中间件提供了对路由的一层过滤和保护.下面模拟一下用中间件验证后台登录. 1. 创建中间件 cmd 窗口进入项目目录,使用 artisan 命令创建 php a ...

  9. python基础===Excel处理库openpyxl

    openpyxl是一个第三方库,可以处理xlsx格式的Excel文件. 安装: pip install openpyxl 对如下excel进行读取操作,如图: from openpyxl import ...

  10. 1438. Shopaholic

    Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Lindsay is a shopaholic. Whenever th ...