标签:public odi getc 管理 文章 app lse write 参数
上篇文章讲了声明一个队列时的参数设置,这篇文章主要说一说发布消息时的参数设置.
发布消息时的完整入参是这样的:
channel.BasicPublish
(
exchange: "test_exchange",
routingKey: "",
mandatory: false,
basicProperties: null,
body: Encoding.Default.GetBytes(msg)
);
下面一一解释:
路由键的设置跟交换机的类型有关.
测试:
生产者
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}");
}
}
}
运行结果:

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

实在是有点多啊!
有两个属性,persistent 和 DeliveryMode ,它们的作用是一样的.
Persistent : true 表示消息持久化.当然,前提是队列也必须持久化.
管理后台可以直接设置 DeliveryMode :

标签:public odi getc 管理 文章 app lse write 参数
原文地址:https://www.cnblogs.com/refuge/p/10355993.html