美文网首页
RabbitMQ入门3-api参数

RabbitMQ入门3-api参数

作者: hi李昊天 | 来源:发表于2020-06-20 20:34 被阅读0次

    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 是否排外的,有两个作用,<br />1:当连接关闭时该队列是否会自动删除;<br />2:该队列是否是私有的private,如果不是排外的,可以使用两个消费者都访问同一个队列,没有任何问题,如果是排外的,会对当前队列加锁,其他通道channel是不能访问的,如果强制访问会报异常;<br />一般等于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方法将消息返还给生产者。<br />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

    相关文章

      网友评论

          本文标题:RabbitMQ入门3-api参数

          本文链接:https://www.haomeiwen.com/subject/fgbgxktx.html