RabbitMQ教程 - 主题(使用Java客户端)
RabbitMQ教程 - 主题(使用Java客户端) 在上一个教程中,我们改进了日志系统。不再仅使用只能进行简单广播的fanout(扇出)交换器,而是使用了direct(直连)交换器,从而能够有选择地接收日志。 虽然使用直连交换器改进了我们的系统,但它仍然存在局限性——无法基于多个条件进行路由。 在我们的日志系统中,可能不仅希望根据严重程度订阅日志,还希望根据发出日志的源进行订阅。你可能...
RabbitMQ教程 - 主题(使用Java客户端) 在上一个教程中,我们改进了日志系统。不再仅使用只能进行简单广播的fanout(扇出)交换器,而是使用了direct(直连)交换器,从而能够有选择地接收日志。 虽然使用直连交换器改进了我们的系统,但它仍然存在局限性——无法基于多个条件进行路由。 在我们的日志系统中,可能不仅希望根据严重程度订阅日志,还希望根据发出日志的源进行订阅。你可能...
发布者 原文 版本:4.0 发布者 概述 本指南涵盖了与发布者相关的各种主题: 基础知识 发布者生命周期 协议差异 消息属性和投递元数据 发布者端的数据安全主题(连接恢复、发布者确认) 异常处理 资源警报的影响 不可路由消息的处理 与发布者相关的指标 并发考虑因素 如何临时阻塞所有发布者 如何排查发布者的常见问题等。 本指南主...
消费者确认与发布者确认 原文 版本:4.0 消费者确认与发布者确认 概述 本指南涵盖了与数据安全相关的两个特性:消费者确认和发布者确认,具体包括: 确认机制存在的原因 手动和自动确认模式 确认的API,包括批量确认和消息重新入队 连接丢失或通道关闭时的自动重新入队 通道预取及其对吞吐量的影响 最常见的客户端错误 发布者确认以及相关的发布者数据安全主题...
AMQP 0-9-1模型详解 cc 概述 本指南将概述AMQP 0-9-1协议,它是RabbitMQ支持的协议之一。 AMQP 0-9-1和AMQP模型的高级概述 什么是AMQP 0-9-1? AMQP 0-9-1(高级消息队列协议)是一种消息传递协议,它使符合该协议的客户端应用程序能够与符合该协议的消息中间件代理进行通信。 代理及其作用 消息代理接收来自发布者(发布消息的应用程序,也称为...
ByteBuf定义 Buffer的存在是为了提高IO 的效率,当Buffer达到一定长度后再2进行数据传输操作,而不是每次写操作完后立即开始数据传输。 首先看看ByteBuf注释中的示意图 +-------------------+------------------+------------------+ | discardable bytes | readable bytes ...
pipeline创建 在netty中, 事件在pipeline中传输, 用户可以中断事件, 添加自己的事件处理逻辑, 可以直接将事件中断不再往下传输, 同样可以改变管道的流向, 传递其他事件。 在netty中, 事件是通过handler对象进行处理的, 里面封装着事件的处理逻辑.而每个handler, 是由HandlerContext进行包装的, 里面封装了对事件传输的操作 ...
NioSocketChannel初始化流程 在之前的流程中,ServerBootStrap在创建时会创建NioSocketChannel,现在开始深入具体的创建流程 public NioServerSocketChannel() { this(DEFAULT_SELECTOR_PROVIDER); } public NioServerSocketChannel(Selector...
事件循环组的初始化 在服务端的代码中,我们创建了两个EventLoopGroup来分别处理连接请求和业务操作。 EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); 首先看看该类型的继承关系 图 3.1 EventLoo...
启动服务前ServerBootstrap类型如何初始化 ServerBootstrap serverBootstrap = new ServerBootstrap(); Bootstrap bootstrap = new Bootstrap(); 了解Bootstrap的建模 以下为简单的继承关系图,服务端与客户端的配置类均继承于AbstractBootstrap。 图2....
从一个简单的CS demo说起 CS模式源码 接下来提供用于演示Netty的源码 服务端 public class NettyServer { public static void main(String[] args) { ServerBootstrap serverBootstrap = new ServerBootstrap(); ...