rabbitmq之Java-channel
来源:互联网 发布:淘宝客后台管理系统 编辑:程序博客网 时间:2024/06/07 10:33
声明交换器:Exchange.DeclareOk exchangeDeclare(String exchange, String type, boolean durable, boolean autoDelete, Map<String, Object> arguments) throws IOException;
exchange:交换器名称
type:交换器类型:direct、fanout、topic
durable:true:服务器重启会保留下来交换器。注意:仅设置此选项,不代表消息持久化。既不保证重启后消息还在。
autoDelete: true:当已经没有消费者时,服务器是否可以删除该交换器。
void basicQos(int prefetchSize, int prefetchCount, boolean global) throws IOException;
prefetchSize:0 prefetchCount:会告诉RabbitMQ不要同时给一个消费者推送多于N个消息,即一旦有N个消息还没有ack,则该consumer将block掉,直到有消息ackglobal:true\false 是否将上面设置应用于channel,简单点说,就是上面限制是channel级别的还是consumer级别
备注:据说prefetchSize 和global这两项,rabbitmq没有实现,暂且不研究
void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) throws IOException;
exchange:交换器
routingKey:路由键,#匹配0个或多个单词,*匹配一个单词,在topic exchange做消息转发用
mandatory(托管):true如果exchange根据自身类型和消息routkey无法找到一个符合条件的queue,那么调用basic.return方法将消息返还给生产者。false:出现上述情形broker会直接将消息扔掉
immediate(立即的):如果exchange在将消息route到queue时发现对应的queue上没有消费者,那么这条消息不会放入队列中。当与消息routekey关联的所有queue(一个或多个)都没有消费者时,该消息会通过basic.return方法返还给生产者。
BasicProperties:需要注意的是BasicProperties.deliveryMode,0:不持久化,1:持久化 这里指的是消息的持久化,配合channel(durable=true),queue(durable)可以实现,及时服务器宕机,消息仍保留。
简单来说:mandatory标志告诉服务器至少将该消息route到一个队列中,否则将消息返还给生产者immediate标志告诉服务器如果消息关联的queue上有消费者,则马上将消息投递给它,如果所有queue都没有消费者,直接把消息返还给生产者,不用将消息如队列等待消费者了。
void basicAck(long deliveryTag, boolean multiple) throws IOException;
deliveryTag:该消息的index
multiple:是否批量。true:将一次性ack所有小于deliveryTag的消息
void basicNack(long deliveryTag, boolean multiple, boolean requeue) throws IOException;
deliveryTag:该消息index
multiple:是否批量。true将一次性拒绝所有小于deliveryTag的消息
requeue:被拒绝的是否重新如队列。
void basicReject(long deliveryTag, boolean requeue) throws IOException;
deliveryTag:该消息的index
requeue:被拒绝的是否重新入队列
channel.basicNack与channel.basicReject的区别在于前者可以拒绝多条消息,而后者一次只能拒绝一条消息。
String basicConsume(String queue, boolean autoAck, Consumer callback) throws IOException;
queue:队列名称
autoAck:是否自动ack,如果不自动ack,需要使用channel.ack、channel.nack、channel.basicReject进行消息应答
Exchange.BindOk exchangeBind(String destination, String source, String routingKey) throws IOException;
destination:队列名
source:交换器名
routingKey:路由键
Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments) throws IOException;
queue:队列名
durable(持久化):true在服务器重启时,能够存活
exclusive:是否为当前连接的专用队列,在连接断开后,会自动删除该队列。
autodelete:当没有任何消费者使用时,自动删除队列。
- rabbitmq之Java-channel
- Java NIO之Channel
- rabbitmq channel参数详解
- rabbitmq channel参数详解
- rabbitmq channel参数详解
- RabbitMQ channel参数详解
- 解读java nio之channel
- 《JAVA NIO》之Channel类图
- java nio 之 初识 channel
- Java 之NIO(二) - Channel
- java NIO之socket channel
- Java NIO之Channel学习
- java NIO 之 buffer and channel
- java NIO 之 buffer and channel(2)
- Java - NIO之Channel(FileChannel)
- 2.Java NIO系列教程之Channel
- Java之NIO(一)Channel和Buffer
- Java的NIO之Channel通道
- linux中的http服务浅谈(3)
- yarn SLS公平调度器测试
- Windows 编译libevent库
- 如何在局域网中将Ubuntu文件夹共享给Windows
- 乒乓球问题 c语言 90分 没通过 知道答案者留下
- rabbitmq之Java-channel
- ubuntu16.04安装wps以及字体找不到的解决方案
- Maven 创建SpringMVC记录
- react-native 打包成web项目用于微信公众号,以及问题汇总
- html div左右/垂直居中
- 写优雅代码之聊一聊接口2
- Java并发编程:线程池的使用
- Java多线程(一)基本概念
- 学习笔记5