检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
Prefetch。 预取值设置建议 如果您只有一个或很少几个消费者在处理消息,建议一次预取多条消息,尽量让客户端保持忙碌。如果您的处理时间和网络状态稳定,则只需将总往返时间除以每条消息在客户端的处理时间即可获得估计的预取值。 在消费者多且处理时间短的情况下,建议使用较低的预取值。过低的预取
上扣款业务只应进行一次,商家也只应产生一条订单流水。这时候使用消息幂等就可以避免这个问题。 在实际应用中,导致消息重复的原因有网络闪断、客户端故障等,且可能发生在消息生产阶段,也可能发生在消息消费阶段。因此,可以将消息重复的场景分为以下两类: 生产者发送消息时发生消息重复: 生产
请求什么类型的操作。 GET:请求服务器返回指定资源。 PUT:请求服务器更新指定资源。 POST:请求服务器新增资源或执行特殊操作。 DELETE:请求服务器删除指定资源,如删除对象等。 HEAD:请求服务器资源头部。 PATCH:请求服务器更新资源的部分内容。当资源不存在的时
压测性能为准。 服务端的性能主要跟以下因素相关:队列数、消息堆积、连接数、channel、消费者数、镜像队列、优先级队列、消息持久化和exchange类型等,在选择实例规格时,请根据业务模型压测结果选择。 一条连接最多可以开启2047个channel。 单机版实例可用于测试场景,
告警级别:重要 未确认消息数过多可能会导致消息堆积 检查消费者是否异常 检查消费者逻辑是否消耗时间过长 连接数 告警阈值:原始值>业务预期连接数 连续触发次数:1 告警级别:重要 连接数突增可能是流量变大的预警 需检查业务是否正常,可参考其他告警 通道数 告警阈值:原始值>业务预期通道数
明,并且在过期时间前也未调用过Basic.Get命令。“x-expires”参数的值必须为非零整数,单位为ms。 以下示例演示在Java客户端设置队列TTL。 Map<String, Object> args = new HashMap<String, Object>(); args
租户配置安全组的入方向、出方向规则限制,可以控制连接实例的网络范围,避免DMS for RabbitMQ暴露给不可信第三方,详情请参见配置安全组。安全组入方向规则的“源地址”应避免设置为0.0.0.0/0。 建议将访问RabbitMQ实例方式设置为密码访问,防止未经认证的客户端误操作实例。 RabbitMQ
开启待下线插件后,容易引起过载风险,影响业务面稳定。 rabbitmq_web_stomp插件通过临时队列提供WebSocket能力,同时其连接和释放依赖于心跳机制,过多的临时队列以及过多连接数会导致内存高水位,从而导致节点状态异常。 消减措施 已开启插件的实例,建议参考设置RabbitMQ告警规则,配置相应的告警,提前预知并消减风险。
00.0008 创建ECS失败。 public.00.0009 创建ECS失败。 public.00.0010 创建ECS失败。 public.00.0011 ECS绑定网卡失败。 public.00.0013 ECS启动失败。 public.00.0014 ECS启动失败。 public
实例问题 RabbitMQ使用的版本是多少? RabbitMQ实例SSL连接的协议版本号是多少? 创建实例时为什么无法查看子网和安全组等信息? RabbitMQ集群实例如何均衡分发请求到每个虚拟机? RabbitMQ实例集群内部的队列是否有冗余备份? RabbitMQ实例是否支持持久化,如何定时备份数据?
x版本需要设置此参数。RabbitMQ AMQP-0-9-1版本Queue默认开启持久化。 是否开启Queue持久化。 开启:该Queue在服务器重启后仍然存在。 不开启:该Queue在服务器重启后会被删除,需要重新创建。 自动删除 是否开启自动删除Queue。 开启:在订阅该Queue消息的最后一个消费
以电商秒杀、抢购等流量短时间内暴增场景为例,传统做法是,用户下单后,订单系统发送查询请求到库存系统,等待库存系统返回请求结果给订单系统。如果库存系统发生故障,订单系统获取不到数据,订单失败。这种情况下,订单系统和库存系统两个子系统高耦合。 图4 系统高耦合 引入RabbitMQ消息队列,当用户下单后,将消息写入
息发送到死信交换机中,并根据“x-dead-letter-routing-key”为死信消息设置死信路由Key。 以下示例演示在Java客户端配置死信交换机和路由: channel.exchangeDeclare("some.exchange.name", "direct");
在声明队列时,可以配置单一活跃消费者,只需要将队列的“x-single-active-consumer”参数设置为“true”。 以下示例演示在Java客户端设置单一活跃消费者。 Channel ch = ...; Map<String, Object> arguments = newHashMap<String
AMQP-0-9-1版本Exchange默认开启持久化。 是否开启Exchange持久化。 开启:该Exchange在服务器重启后仍然存在。 不开启:该Exchange在服务器重启后会被删除,需要重新创建。 Internal 仅RabbitMQ 3.x.x版本包含此参数。 Exchange是否为RabbitMQ内部使用。
String 实例内网连接IP地址。 connect_domain_name String 实例内网连接域名。 public_connect_address String 实例公网连接IP地址。 public_connect_domain_name String 实例公网连接域名。 port
设置队列过期时间。队列过期时间以x-message-ttl值体现。从消息进入队列开始计算,超过了配置的队列过期时间,消息会自动被删除。 在客户端代码中设置x-message-ttl值,单位为毫秒(ms)。 Map<String, Object> arguments = new HashMap<String
也可以通过Policy的方式设置。如果一个队列同时使用这两种方式设置的话,Policy的方式具备更高的优先级。 以下示例演示在Java客户端通过调用channel.queueDeclare设置惰性队列。 Map<String, Object> args = new HashMap<String
String 实例内网连接IP地址。 connect_domain_name String 实例内网连接域名。 public_connect_address String 实例公网连接IP地址。 public_connect_domain_name String 实例公网连接域名。 port
String 实例内网连接IP地址。 connect_domain_name String 实例内网连接域名。 public_connect_address String 实例公网连接IP地址。 public_connect_domain_name String 实例公网连接域名。 port