RabbitMQ API
1、声明交换器exchangeDeclare()
1 /** 2 *@param exchange交换器名称 3 *@param type交换器类型 4 *@param durable是否持久化 5 *@param autoDelete是否自动删除;如果此交换器的所有客户端都断开连接时,RabbitMQ会自动删除此交换器,并且会自动解绑对应的队列或其他交换器; 6 *@param internal是否内置,如果内置外部客户端无法连接上,只能由其他交换器连接 7 *@param arguments 其他结构化参数 比如alternate-exchange 备胎交换器;当次交换器坏道了可以用备胎交换器 8 **/ 9 Exchange.DeclareOk exchangeDeclare
(String exchange,String type,boolean durable,boolean autoDelete,boolean internal,Map<String,Object>arguments)
throws IOException;
2、检测交换器exchangeDeclarePassive()
1 /*** 2 *用来检测交换器是否存在,如果存在则正常返回,如果不存在则抛出异常,同时channel也会关闭 3 *@param name 交换器名称 4 **/ 5 Exchange.DeclareOk exchangeDeclare(String name) throws IOException;
3、声明队列queueDeclare()
1 /*** 2 * 创建队列 3 * PS:不带任何参数的表示默认创建一个有RabbitMQ命名的、排他的、自动删除的、非持久化的队列; 4 * @param queue 队列名称 5 * @param durable 是否持久化 6 * @param exclusive 设置是否排他;如果排他则对首次声明他的连接可见(同一连接的不同信道是可以访问队列的),并在连接断开时自动删除; 7 * 如果一个连接已经申明了XXX命名的队列,其他连接时不能声明相同名字的队列的,即使这个队列是持久化的一旦连接关闭或 8 * 者客户端退出改队列也会自动删除;适合统一客户端同时发送读取消息的场景; 9 * @param autoDelete 必须是经过连接之后,如果消费者都断开了以后会自动删除; 10 * @param arguments 设置队列的其他参数 11 **/ 12 Queue.DeclareOk queueDeclare(String queue,boolean durable,boolean exclusive,boolean autoDelete,Map<String,Object> arguments)
throws IOException;
4、绑定队列queueBind()
1 /*** 2 * 绑定队列
3 *
4 * @param queue 队列名称 5 * @param exchange 交换器名称 6 * @param routingKey 用来绑定队列和交换器的路由键 7 * @param arguments 设置队列的其他参数 8 **/ 9 Queue.DeclareOk queueBind(String queue,boolean exchange,boolean routingKey,Map<String,Object> arguments) throws IOException;
5、解绑队列queueUnBind()
/*** * 解绑队列 * @param queue 队列名称 * @param exchange 交换器名称 * @param routingKey 用来绑定队列和交换器的路由键 * @param arguments 设置队列的其他参数 **/ Queue.DeclareOk queueUnBind(String queue,boolean exchange,boolean routingKey,Map<String,Object> arguments) throws IOException;
6、绑定交换器ExchangeBind()
1 /*** 2 * 解绑队列 3 * @param destination 目标交换器 4 * @param exchange 源交换器 5 * @param routingKey 用来绑定交换器和交换器的路由键 6 * @param arguments 设置交换器的其他参数 7 **/ 8 Queue.DeclareOk exchangeBind(String destination,boolean source,boolean routingKey,Map<String,Object> arguments) throws IOException;
7、发送消息basicPublish()
/*** * 发送消息 * @param exchange 目标交换器 * @param routingKey 路由键 * @param mandatory true表示根据自身类型和routingKey找不到符合条件的队列将消息返回给生产者需要定义channel.addReturnListener(new MyReturnListener()); * @param immediate true表示队列上不存在绑定的消费者则返回给生产者:需要定义channel.addReturnListener(new MyReturnListener()); * @param props 消息的基本属性,有14个属性成员;分别是: * contentType 文本格式 * contentEncoding 编码格式 * headers(Map<String,Object>) header的消息会用到 * deliveryMode 消息持久化 1 不持久化 2 持久化 * priority 优先级 * correlationId用于将RPC响应与请求相关联 * replyTo 通常用于命名回调队列 * expiration 设置过期消息过期时间 * messageId * timestamp * type * userId * appId * clusterId * @param body 消息体 **/ void basicPublish(String exchange,String routingKey,boolean mandatory,boolean immediate,BasicProperties props,byte[] body) throws IOException;
案例1、设置持计划、优先级1、text/plain类型
channel.basicPublish(exchangeName,routingKey,new AMQP.BasicProperties.Builder() .contentType("text/plain") .deliveryMode(2) .priority(1) .userId("hidden") .build(),boolean immediate,BasicProperties props,byte[] body) throws IOException;
案例2
1 Map<String,Object> hearders = new HashMap<String,Object>(); 2 headers.put("location","here"); 3 headers.put("time","today"); 4 channel.basicPublish(exchangeName,routingKey,new AMQP.BasicProperties.Builder() 5 .contentType("text/plain") 6 .deliveryMode(2) 7 .priority(1) 8 .userId("hidden") 9 .hearder(hearders)//有hearder的 10 .expiration("60000")//过期时间 11 .build(),boolean immediate,BasicProperties props,byte[] body) throws IOException;
8、消息basicConsume()消费——推模式
1 /*** 2 * 消费消息 3 * @param queue 队列名称 4 * @param autoAck 是否自动确认 5 * @param consumerTag 消费者标签用来区分多个消费者 6 * @param noLocal true表示不能将中生产者发送的消息传送给同一个connecton的消费者 7 * @param exclusive 设置是否排他 8 * @param arguments 设置消费者的其他参数 9 * @param callback 设置消费者的回调函数 10 **/ 11 Strign basicConsume(String queue,boolean autoAck,String consumerTag,boolean noLocal,
boolean exclusive,Map<String,Object> arguments,Consumer callback) throws IOException;
9、消息basicGet()消费——拉模式
1 /*** 2 * 消费消息 -拉模式 3 * @param queue 队列名称 4 * @param autoAck 是否自动确认 5 **/ 6 GetResPonse basicGet(String queue,boolean autoAck) throws IOException;
10、basicReject()拒绝接受消息
1 /*** 2 * 消费拒绝接受 3 * @param deliveryTag 消息id 4 * @param queue 为true则会将消息重新加入队列,如果为flase则直接干掉; 5 **/ 6 void basicReject(long deliveryTag,boolean queue) throws IOException;
11、basicNack()批量拒绝消息
1 /*** 2 * 消费批量拒绝接受 3 * @param deliveryTag 消息id 4 * @param multiple 为true表示拒绝deliveryTag之前的所有未被确认你的消息 5 * @param queue 为true则会将消息重新加入队列,如果为flase则直接干掉; 6 **/ 7 void basicNack(long deliveryTag,boolean multiple,boolean requeue) throws IOException;
12、重新入队
1 /*** 2 * 未确认消息重新入队 3 * @param queue 默认为true则会将消息重新加入队列 任何消费者都可以消费,false重新加入队列 只交给之前的消费者消费; 4 **/ 5 Basic.RecoverOk basicRecover(boolean requeue) throws IOException;

浙公网安备 33010602011771号