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;

 

posted @ 2019-06-21 14:49  jeasy  阅读(783)  评论(0)    收藏  举报