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

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

                    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. (转)Linux下使Shell 命令脱离终端在后台运行

    转自: http://www.linuxidc.com/Linux/2011-05/35723.htm 方法如下: (1)输入命令: nohup 你的shell命令 & (2)回车,使终端回到 ...

  2. 「6月雅礼集训 2017 Day8」gcd

    [题目大意] 定义times(a, b)表示用辗转相除计算a和b的最大公约数所需步骤. 那么有: 1. times(a, b) = times(b, a) 2. times(a, 0) = 0 3. ...

  3. bzoj 1968 数学

    在1-n所有数中,i一共可以成为n/i个数的约数,也即所有的约数中有n/i个i,所以扫一遍累加答案就好了. /********************************************* ...

  4. C# 文件类的操作---删除

    //删除文件夹 1这是最简单的方法 DirectoryInfo di = new DirectoryInfo(string Path); di.Delete(true); 注:path是你要删除的非空 ...

  5. 关于win7局域网共享的相关设置

    模式1> 被访问方相关设置步骤: (1)被共享方的电脑开通来宾用户 (2)被共享方的电脑的本地安全策略需要设置成 "仅来宾" (3)被共享方的电脑高级共享设置中 " ...

  6. 统计Visual Studio项目的代码行数

    原文转自 https://blog.csdn.net/tyc129/article/details/74279806 使用Visual Studio 自带的在文件中查找功能中的正则表达式实现代码统计功 ...

  7. copy_from_user分析

    前言 copy_from_user函数的目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0.它内部的实现当然不仅仅拷贝数据,还需要考虑到传入的用户空间地址是否有效,比如地址是不 ...

  8. [How to] 真机调试

    1.简介 真机调试介绍. 在xcode7之前需要每年99刀的代价才能活着开发者权限并能够在真机上调试,现在如果单纯的想在真机上调是就不必花这个钱了. 2.步骤 完毕.

  9. dos命令连接mysql并且查看编码方式

    打开cmd: 输入:mysql -hlocalhost -uroot -p 然后: show variables like 'char%';

  10. java.util.ConcurrentModification并发修改异常

    在运行下面这段代码时出现了并发修改异常java.util.ConcurrentModification: public static void main(String[] args) { List l ...