RabbitMQ-Java客户端API指南-下
2017-12-17 19:34
375 查看
RabbitMQ-Java客户端API指南-下
使用主机列表
可以将Address数组传递给newConnection()。的地址是简单地在一个方便的类com.rabbitmq.client包与主机 和端口组件。例如:
Address[] addrArr = new Address[]{ new Address(hostname1, portnumber1), new Address(hostname2, portnumber2)}; Connection conn = factory.newConnection(addrArr);
使用AddressResolver接口进行服务发现
从版本3.6.6开始,可以让AddressResolver的实现 在创建连接时选择连接的位置:Connection conn = factory.newConnection(addressResolver); public interface AddressResolver { List<Address> getAddresses() throws IOException; }
就像主机列表一样,返回的第一个地址将首先被尝试,如果客户端无法连接到第一个地址,则返回第二个,依此类推。
从网络故障中自动恢复
连接恢复ConnectionFactory factory = new ConnectionFactory(); factory.setUsername(userName); factory.setPassword(password); factory.setVirtualHost(virtualHost); factory.setHost(hostName); factory.setPort(portNumber); factory.setAutomaticRecoveryEnabled(true); // connection that will recover automatically Connection conn = factory.newConnection();
如果由于异常而导致恢复失败(例如,RabbitMQ节点仍然无法访问),则会在固定的时间间隔(默认值为5秒)后重试。间隔可以配置:
ConnectionFactory factory = new ConnectionFactory(); // attempt recovery every 10 seconds factory.setNetworkRecoveryInterval(10000);
当提供地址列表时,列表被混洗,并且所有地址在下一个地方被尝试:
ConnectionFactory factory = new ConnectionFactory(); Address[] addresses = {new Address("192.168.1.4"), new Address("192.168.1.5")}; factory.newConnection(addresses);
指标和监测
从版本4.0.0开始,客户端收集运行时指标(例如已发布消息的数量)。度量标准集合是可选的,并使用setMetricsCollector(metricsCollector)方法在ConnectionFactory级别进行设置 。此方法需要一个MetricsCollector实例,在客户端代码的多个位置调用该实例。客户端支持 Micrometer (截至版本4.3)和 Dropwizard Metrics 开箱即用。
以下是收集的指标:
打开连接的数量
开放频道的数量
已发布消息的数量
消耗的消息数量
已确认消息的数量
被拒绝的邮件数量
Micrometer和Dropwizard Metrics都提供计数,但也包括平均速率,最后五分钟速率等,用于与消息相关的指标。他们还支持通用的监控和报告工具(JMX,Graphite,Ganglia,Datadog等)。
Micrometer支持
ConnectionFactory connectionFactory = new ConnectionFactory(); MicrometerMetricsCollector metrics = new MicrometerMetricsCollector(); connectionFactory.setMetricsCollector(metrics); ... metrics.getPublishedMessages(); // get Micrometer's Counter object
支持 多种报告后端:Netflix Atlas,Prometheus,Datadog,Influx,JMX等
您通常会将MeterRegistry的一个实例传递 给MicrometerMetricsCollector。这里是JMX的一个例子:
JmxMeterRegistry registry = new JmxMeterRegistry(); MicrometerMetricsCollector metrics = new MicrometerMetricsCollector(registry); ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setMetricsCollector(metrics);
Dropwizard Metrics支持
ConnectionFactory connectionFactory = new ConnectionFactory(); StandardMetricsCollector metrics = new StandardMetricsCollector(); connectionFactory.setMetricsCollector(metrics); ... metrics.getPublishedMessages(); // get Metrics' Meter object
支持 多种报告后端:Netflix Atlas,Prometheus,Datadog,Influx,JMX等
您通常会将MetricsRegistry的一个实例传递 给StandardMetricsCollector。这里是JMX的一个例子:
MetricRegistry registry = new MetricRegistry(); StandardMetricsCollector metrics = new StandardMetricsCollector(registry); ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setMetricsCollector(metrics); JmxReporter reporter = JmxReporter .forRegistry(registry) .inDomain("com.rabbitmq.client.jmx") .build(); reporter.start();
相关文章推荐
- RabbitMQ Java客户端API指南
- RabbitMQ的Java客户端API指南
- RabbitMQ-Java客户端API指南-下
- RabbitMQ-Java客户端API指南-下
- RabbitMQ-Java客户端API指南-上
- RabbitMQ-Java客户端API指南-上
- RabbitMQ-Java客户端API指南-上
- Java客户端API指南
- RabbitMQ的java客户端API使用文档中文版
- Sqoop2 Java客户端API指南
- RabbitMQ学习之Java客户端连接测试(二)
- Java 8 Stream API 实用指南
- ZooKeeper之Java客户端API使用—更新数据。
- ZooKeeper之Java客户端API使用—检测节点是否存在
- 【RabbitMQ】CentOS安装RabbitMQ,及简单的Java客户端连接
- 【ZooKeeper】Java客户端API使用介绍。
- Tango 开发指南 — 运动追踪 API(Java 描述)
- RDD JAVA API 用法指南
- RabbitMQ---安装、运行、java客户端连接
- ElasticSearch的Java Api基本操作入门指南