1 Queue.Declareok queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)
queue:routingKey,即隊列的名稱
durable:true/false,是否支持持久化
exclusive:true/false,排他隊列,表示是否只能被一個消費者所消費
autoDelete:true/false,表示在沒有訂閱的消費者時是否被刪除
arguments:其他參數
2 void basicQos(int prefetchSize,int prefetchCount,boolean global)
prefetchSize:0
prefetchCount:多個消費者消費能力不同,所以rabbitmq會在消費者消費掉prefetchCount個消息后,再次發送prefetchCount個消息給消費者
global:true/false,是否將上面的配置應用於channel,若是否,就是應用於消費者consumer
3 void basicPublish(String exchange,String routingKey,boolean mandatory,boolean immediate,BasicProperties props,byte[] body) throws IOException
exchange:交換機的名稱
routingKey:隊列的名稱
mandatory:true,exchange根據自身類型和消息routingKey沒有找到合適的隊列queue,那么就會調用basic.return將消息返回給生產者,若為false,則broker把消息丟棄
immediate:true,當消息通過exchange路由到queue的時候,發現這個queue上面沒有消費者,那么就不會進入這個queue,如果根據routingKey匹配到的所有的隊列都是沒有消費者的,那么就會調用basic.return方法返回給生產者
props:表示消息的持久化,配合channel和queue的durable使用
body:發送的消息
4 Exchange.DeclareOk exchangeDeclare(String exchange,String type,boolean durable,boolean autoDelete,Map<String,Object> arguments)
type:有四種類型,分別為:fanout,direct,topic,headers
durable:表示是否持久化,為true,表示是exchange的持久化,僅設置這一項不代表消息的持久化。
autoDelete:當沒有消費者消費的時候是否要刪除exchange
5 Exchange.BindOk exchangeBind(String destination,String source,String routingkey)
生產者發送消息到source交換機,source根據路由鍵找到與其綁定的另一個交換機destination,並把消息轉發到destination中,存儲在destination綁定的隊列queue
6 Queue.BindOk queueBind(String queue, String exchange, String routingKey)
routingKey:作為bindingKey,用於與生產者傳過來的消息中攜帶的routingKey做對比
7 String basicConsume(String queue,boolean autoAck,Consumer callback)
autoAck:消息的確認模式自動應答,true表示自動應答,false需要使用basicAck、basicNack或者是basicReject進行消息應答
callback:消費者對象
8 void basicAck(long deliveryTag,boolean multiple)
deliveryTag:消息的index
multiple:是否批量,若為true,則一次性回執所有小於deliveryTag的消息
9 void basicNack(long deliveryTag,boolean multiple,boolean requeue)
requeue:被拒絕是否重新入隊列
10 void basicReject(long deliveryTag,boolean requeue)
basicReject方法和basicNack區別是每次只能拒絕一條消息,因為方法中沒有multiple這個參數