您的位置 首页 golang

RabbitMQ入门3-api参数


ch.QueueDeclare

    queue, err = ch.QueueDeclare(        "hello", // name         false,   // durable         false,   // delete when unused        false,   // exclusive        false,   // no-wait        nil,     // arguments        )
参数名参数类型解释
namestring队列名称
durablebool是否持久化,队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库
autoDeletebool是否自动删除队列,当最后一个消费者断开连接之后队列是否自动被删除,可以通过RabbitMQ Management,查看某个队列的消费者数量,当consumers = 0时队列就会自动删除
exclusivebool是否排外的,有两个作用,
1:当连接关闭时该队列是否会自动删除;
2:该队列是否是私有的private,如果不是排外的,可以使用两个消费者都访问同一个队列,没有任何问题,如果是排外的,会对当前队列加锁,其他通道channel是不能访问的,如果强制访问会报异常;
一般等于true的话用于一个队列只能有一个消费者来消费的场景
no-waitbool是否等待服务器返回
argumentsmap[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) 
参数名参数类型解释
exchangestring交换机
routing keystring路由键,#匹配0个或多个单词,*匹配一个单词,在topic exchange做消息转发用
mandatorybooltrue:如果exchange根据自身类型和消息routeKey无法找到一个符合条件的queue,那么会调用basic.return方法将消息返还给生产者。
false:出现上述情形broker会直接将消息扔掉
immediatebooltrue:如果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)
参数名参数类型解释
queuestring
consumerstring
auto-ackbool是否自动ack,如果不自动ack,需要使用channel.ack、channel.nack、channel.basicReject 进行消息应答
exclusivebool
no-localbool
no-waitbool是否等待服务器返回
args

ch.ExchangeDeclare

ch.ExchangeDeclare(   "logs",   // name   "fanout", // type   true,     // durable   false,    // auto-deleted   false,    // internal   false,    // no-wait   nil,      // arguments)
参数名参数类型解释
namestring
typestring交换机类型: direct fanout topic headers其中一种
durablebool是否持久化,durable设置为true表示持久化,反之是非持久化,持久化的可以将交换器存盘,在服务器重启的时候不会丢失信息
auto-deletedbool是否自动删除,设置为TRUE则表是自动删除,自删除的前提是至少有一个队列或者交换器与这交换器绑定,之后所有与这个交换器绑定的队列或者交换器都与此解绑,一般都设置为fase
internalbool是否内置,如果设置 为true,则表示是内置的交换器,客户端程序无法直接发送消息到这个交换器中,只能通过交换器路由到交换器的方式
no-waitbool是否等待服务器返回
arguments 其它一些结构化参数比如alternate-exchange

文章来源:智云一二三科技

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

文章地址:https://www.zhihuclub.com/7467.shtml

关于作者: 智云科技

热门文章

网站地图