检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
创建RabbitMQ Exchange Exchange用于接收、分配消息。生产者向分布式消息服务RabbitMQ版发送消息时,不会直接将消息发送到Queue,而是先将消息发送到Exchange中,Exchange根据路由键查找Queue,如果查找到,将消息存放到Queue中,如果未查找到,将消息丢弃。
RabbitMQ相关概念 华为云使用RabbitMQ作为消息引擎,RabbitMQ是一个生产者和消费者模型,主要负责接收、存储和转发消息。以下概念基于RabbitMQ进行描述。 消息 消息一般分为两部分,消息体和标签,标签主要用来描述这条消息,消息体是消息的内容,是一个JSON体或者数据等。
状态码如表1所示 表1 状态码 状态码 编码 错误码说明 100 Continue 继续请求。 这个临时响应用来通知客户端,它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols 切换协议。只能切换到更高级的协议。 例如,切换到HTTP的新版本协议。 200
ash Exchange在接收到Message A和Message B后,会根据它们携带的Routing Key计算出一个hash值,根据hash值将消息路由到对应的Queue中。Queue 1的权重为1,Queue 2的权重为2,因此Queue 2接收到的消息数量会是Queue
M-dd HH:mm:ss"); LOG.info("receive message: {}", message + " 接收时间:" + simpleDateFormat.format(new Date())); } }
hannel_id)。 number Integer channel数量 user String 消费者用户名,在开启ACL访问控制后返回真实用户名,未开启ACL时返回null。 connection_name String connection信息,包括客户端IP:Port到服务端IP:Port。
least once,就必须使用同步等待方式。 消费者确认 消费者确认是指服务端通过确认消息是否成功被消费者接收,来判断是否删除队列中的此消息。 消费者确认对数据可靠性十分重要,接收重要消息的消费应用程序在未处理完消息前不应确认消息,以便消费者有足够的时间处理消息,无需担心消息处理过程
x-consistent-hash Exchange需要设置Routing Key,Routing Key表示Queue的权重。数值越大,Queue的权重越大,分发消息时接收到的消息越多。 Fanout Exchange和Header Exchange无需设置Routing Key,Routing Key对于这两种Exchange不起作用。
不要在线程之间共享通道 大多数客户端并未实现通道的线程安全,所以不要在线程之间共享通道。 不要频繁打开和关闭连接或通道 频繁打开和关闭连接或通道会发送和接收大量的TCP包,从而导致更高的延迟,确保不要频繁打开和关闭连接或通道。 生产者和消费者使用不同的连接 生产者和消费者使用不同的连接以实现高
x-consistent-hash Exchange需要设置Routing Key,Routing Key表示Queue的权重。数值越大,Queue的权重越大,分发消息时接收到的消息越多。 Fanout Exchange和Header Exchange无需设置Routing Key,Routing Key对于这两种Exchange不起作用。
企业可以在成本中心的“预算管理”页面创建精细粒度的预算来管理成本和使用量,在实际或预测超过预算阈值时,自动发送通知给指定消息接收人。企业还可以创建预算报告,定期将指定预算进展通知给指定消息接收人。 例如企业需要创建一个RabbitMQ实例的按需成本预算,每月预算金额为2000元,当预测金额高于预算
basicPublish("testExchange", "key", true, null, "test".getBytes()); 消费者端 网络异常可能导致消费者接收到重复的消息,建议在消费者客户端使用幂等。 以下示例演示在Java客户端设置幂等: Set<Long> messageStore = new