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-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方法将消息返还给生产者。<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
|