乐趣区

RabbitMQ入门3api参数

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-ttlx-expiresx-rnax-lengthx-rnax-length-bytesx-dead-letter-exchangex-deadletter-routing-keyx-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
退出移动版