ch.QueueDeclare
queue, err = ch.QueueDeclare(
"hello", // name
false, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
)
参数名 | 参数类型 | 解释 |
---|---|---|
name | string | 队列名称 |
durable | bool | 是否持久化, 队列的声明默认是存放到内存中的,如果 rabbitmq 重启会丢失,如果想重启之后还存在就要使队列持久化,保存到 Erlang 自带的 Mnesia 数据库中,当 rabbitmq 重启之后会读取该数据库 |
autoDelete | bool | 是否自动删除队列,当最后一个消费者断开连接之后队列是否自动被删除,可以通过 RabbitMQ Management,查看某个队列的消费者数量,当 consumers = 0 时队列就会自动删除 |
exclusive | bool | 是否排外的,有两个作用, 1: 当连接关闭时该队列是否会自动删除; 2: 该队列是否是私有的 private, 如果不是排外的,可以使用两个消费者都访问同一个队列,没有任何问题,如果是排外的,会对当前队列加锁,其他通道 channel 是不能访问的,如果强制访问会报异常; 一般等于 true 的话用于一个队列只能有一个消费者来消费的场景 |
no-wait | bool | 是否等待服务器返回 |
arguments | map[string]interface{} | 设置队列的其他一些参数,如 x-rnessage-ttl 、x-expires 、x-rnax-length 、x-rnax-length-bytes 、x-dead-letter-exchange 、x-deadletter-routing-key 、x-rnax-priority 等。 |
ch.Publish
ch.Publish(
"", // exchange"hello", // routing key
false, // mandatory
false, // immediate
body, // msg
)
参数名 | 参数类型 | 解释 |
---|---|---|
exchange | string | 交换机 |
routing key | string | 路由键,# 匹配 0 个或多个单词,* 匹配一个单词,在 topic exchange 做消息转发用 |
mandatory | bool | true:如果 exchange 根据自身类型和消息 routeKey 无法找到一个符合条件的 queue,那么会调用 basic.return 方法将消息返还给生产者。 false:出现上述情形 broker 会直接将消息扔掉 |
immediate | bool | true:如果 exchange 在将消息 route 到 queue(s) 时发现对应的 queue 上没有消费者,那么这条消息不会放入队列中。当与消息 routeKey 关联的所有 queue(一个或多个) 都没有消费者时,该消息会通过 basic.return 方法返还给生产者。 |
msg | 消息内容 |
ch.Consume
ch.Consume(
"hello", // queue
"", // consumer
true, // auto-ack
false, // exclusive
false, // no-local
false, // no-wait
nil, // args
)
参数名 | 参数类型 | 解释 |
---|---|---|
queue | string | |
consumer | string | |
auto-ack | bool | 是否自动 ack,如果不自动 ack,需要使用 channel.ack、channel.nack、channel.basicReject 进行消息应答 |
exclusive | bool | |
no-local | bool | |
no-wait | bool | 是否等待服务器返回 |
args |
ch.ExchangeDeclare
ch.ExchangeDeclare(
"logs", // name
"fanout", // type
true, // durable
false, // auto-deleted
false, // internal
false, // no-wait
nil, // arguments
)
参数名 | 参数类型 | 解释 |
---|---|---|
name | string | |
type | string | 交换机类型: direct fanout topic headers 其中一种 |
durable | bool | 是否持久化,durable 设置为 true 表示持久化, 反之是非持久化, 持久化的可以将交换器存盘, 在服务器重启的时候不会丢失信息 |
auto-deleted | bool | 是否自动删除, 设置为 TRUE 则表是自动删除, 自删除的前提是至少有一个队列或者交换器与这交换器绑定, 之后所有与这个交换器绑定的队列或者交换器都与此解绑, 一般都设置为 fase |
internal | bool | 是否内置, 如果设置 为 true, 则表示是内置的交换器, 客户端程序无法直接发送消息到这个交换器中, 只能通过交换器路由到交换器的方式 |
no-wait | bool | 是否等待服务器返回 |
arguments | 其它一些结构化参数比如 alternate-exchange
|