华为云用户手册

  • 适用计费项 分布式消息服务RocketMQ版对您选择的RocketMQ实例和RocketMQ的磁盘存储空间收费。以下计费项支持包年/包月。 表1 适用计费项 计费项 说明 实例费用 4.8.0版本的实例费用包括代理规格和代理数量。 5.x基础版的实例费用包括TPS和部署类型。 存储空间费用 总存储空间(单个代理的存储空间*代理数量)的费用。随包年/包月RocketMQ实例创建的存储空间,其计费模式也为包年/包月。 假设您计划购买一个RocketMQ 4.8.0版本的实例,其存储空间为300GB。在购买RocketMQ实例页面底部,您将看到所需费用的明细,如图1所示。 图1 配置费用示例 配置费用将包括以下部分: 实例费用:根据所选配置(包括代理规格和代理数量)计算的费用。 存储空间费用:磁盘类型和总磁盘存储空间(单个代理的存储空间*代理数量)的费用。
  • 变更配置后对计费的影响 当前包年/包月RocketMQ实例资源的规格不满足您的业务需要时,您可以在RocketMQ实例控制台发起变更规格操作,变更时系统将按照如下规则为您计算变更费用: 资源升配:新配置价格高于老配置价格,此时您需要支付新老配置的差价。 资源降配:新配置价格低于老配置价格,此时华为云会将新老配置的差价退给您。 这里以资源升配且无任何优惠的场景为例,假设您于2023/04/08在“华北-北京四”区域购买了一个包年/包月RocketMQ实例(rrocketmq.4u8g.cluster*1),购买时长为1个月,计划在2023/04/18变更规格为rocketmq.8u16g.cluster*1。旧配置价格为6300 元/月,新配置价格为12150 元/月。计算公式如下: 升配费用=新配置价格*剩余周期-旧配置价格*剩余周期 公式中的剩余周期为每个自然月的剩余天数/对应自然月的最大天数。本示例中,剩余周期=12(4月份剩余天数)/ 30(4月份最大天数)+ 8(5月份剩余天数)/ 31(5月份最大天数)=0.6581,代入公式可得升配费用=12150*0.6581-6300*0.6581=3849.89(元) 更多信息请参见变更资源规格费用说明。
  • 计费说明 分布式消息服务RocketMQ版的计费项由实例费用和存储空间费用组成。具体内容如表1所示。 表1 分布式消息服务RocketMQ版计费项 计费项 计费项说明 适用的计费模式 计费公式 实例费用 4.8.0版本计费因子:代理规格和代理数量 5.x基础版计费因子:TPS和部署类型 包年/包月、按需计费 实例规格单价 * 购买时长 实例规格单价请参见分布式消息服务RocketMQ版价格详情中的“实例价格”。 存储空间费用 计费因子:云硬盘类型、容量 包年/包月、按需计费 云硬盘单价 * 购买时长 云硬盘单价请参见分布式消息服务RocketMQ版价格详情中的“存储价格”。
  • 计费示例 以包年/包月计费模式为例,假设您于2023/03/08 15:50:04在“华北-北京四”区域购买了一个包年/包月4.8.0版本的RocketMQ实例(规格:rocketmq.4u8g.cluster.small*1,总存储空间:超高I/O 300GB),计费资源包括实例费用(代理规格和代理数量),以及存储空间费用(超高I/O 300GB)。购买时长为一个月,并在到期前手动续费1个月,则: 第一个计费周期为:2023/03/08 15:50:04 ~ 2023/04/08 23:59:59 第二个计费周期为:2023/04/08 23:59:59 ~ 2023/05/08 23:59:59 图1给出了上述示例配置的费用计算过程。 图中价格仅供参考,实际计算请以分布式消息服务RocketMQ版价格详情中的价格为准。 图1 包年/包月RocketMQ实例费用计算示例(华北-北京四区域) 按需计费模式下,各计费项的计费示例请参见计费示例。
  • 配置流水线钉钉通知 将流水线信息推送到钉钉。 访问CodeArts Pipeline首页。 在流水线列表页搜索目标流水线,单击操作列,选择“编辑”。 进入流水线“任务编排”页面,切换至“通知订阅”页面。 单击“第三方通知”下“钉钉”,根据需要填写通知信息,填写完成后即可激活通知。 图4 配置钉钉通知 表3 配置钉钉通知 操作项 说明 Webhook地址 填写钉钉机器人通知URL。 加签密钥 钉钉自定义机器人可以开启安全设置,若未使用加签,无需填写加签秘钥。 事件类型 选择要通知的事件,可选择已完成、失败、暂停、挂起、忽略五种事件类型。 通知内容 选择要通知的内容,可选择流水线名称、流水线执行描述、执行人、触发信息、项目名称、执行时间、运行状态七种通知内容。 @user_id 填写要接受通知的飞书的user_id,多个user_id之间以逗号分隔。 配置完成后,保存流水线。
  • 配置流水线企业微信通知 将流水线信息推送到企业微信。 访问CodeArts Pipeline首页。 在流水线列表页搜索目标流水线,单击操作列,选择“编辑”。 进入流水线“任务编排”页面,切换至“通知订阅”页面。 单击“第三方通知”下“企业微信”,根据需要填写通知信息,填写完成后即可激活通知。 图3 配置企业微信通知 表2 配置企业微信通知 操作项 说明 Webhook地址 填写企业微信机器人通知URL。 事件类型 选择要通知的事件,可选择已完成、失败、暂停、挂起、忽略五种事件类型。 通知内容 选择要通知的内容,可选择流水线名称、流水线执行描述、执行人、触发信息、项目名称、执行时间、运行状态七种通知内容。 @user_id 填写要接受通知的企业微信的user_id,多个user_id之间以逗号分隔。 配置完成后,保存流水线。
  • 配置流水线服务动态通知 通过邮件或服务动态的方式推送通知。流水线被删除、执行失败、执行成功以及配置被更新时,可以配置给创建人、执行人、收藏人发送服务动态或邮件。 访问CodeArts Pipeline首页。 在流水线列表页搜索目标流水线,单击操作列,选择“编辑”。 进入流水线“任务编排”页面,切换至“通知订阅”页面。 单击“官方通知”下“服务动态”,根据需要勾选/取消勾选通知方式。 默认情况下,服务动态通知都发送,邮件通知都不发送。 在流水线首页右上角单击,会弹出“通知”侧滑框,即可查看通知消息。 图1 配置服务动态通知 配置完成后,保存流水线。
  • 配置流水线飞书通知 将流水线信息推送到飞书。 访问CodeArts Pipeline首页。 在流水线列表页搜索目标流水线,单击操作列,选择“编辑”。 进入流水线“任务编排”页面,切换至“通知订阅”页面。 单击“第三方通知”下“飞书”,根据需要填写通知信息,填写完成后即可激活通知。 图2 配置飞书通知 表1 配置飞书通知 操作项 说明 Webhook地址 填写飞书机器人通知URL。 加签密钥 飞书自定义机器人可以开启安全设置,若未使用加签,无需填写加签秘钥。 事件类型 选择要通知的事件,可选择已完成、失败、暂停、挂起、忽略五种事件类型。 通知内容 选择要通知的内容,可选择流水线名称、流水线执行描述、执行人、触发信息、项目名称、执行时间、运行状态七种通知内容。 @user_id 填写要接受通知的飞书的user_id,多个user_id之间以逗号分隔。 配置完成后,保存流水线。
  • 支持多少个Topic? 不同实例规格支持的Topic个数不同,具体参见表1、表2和表3。 表1 实例规格说明(分布式消息服务RocketMQ版4.8.0) 资源规格 代理(个) 存储容量(GB/代理) 单个代理TPS 单个代理Topic数上限 单个代理消费组数上限 rocketmq.4u8g.cluster.small 1 ~ 2 300 ~ 60000 15000 2000 2000 rocketmq.4u8g.cluster 1 ~ 10 300 ~ 600000 20000 4000 4000 rocketmq.8u16g.cluster 1 ~ 10 300 ~ 900000 25000 8000 8000 rocketmq.12u24g.cluster 1 ~ 10 300 ~ 900000 28000 12000 12000 rocketmq.16u32g.cluster 1 ~ 10 300 ~ 900000 30000 16000 16000 表2 实例规格说明(分布式消息服务RocketMQ版5.x基础版单机) 资源规格 存储容量(GB) 实例TPS 实例Topic数上限 实例消费组数上限 rocketmq.b1.large.1 100 ~ 30000 500 50 500 表3 实例规格说明(分布式消息服务RocketMQ版5.x基础版集群) 资源规格 存储容量(GB) 实例TPS 实例Topic数上限 实例消费组数上限 rocketmq.b2.large.4 200 ~ 60000 2000 100 1000 rocketmq.b2.large.8 200 ~ 60000 4000 100 1000 rocketmq.b2.large.12 200 ~ 60000 6000 100 1000 父主题: Topic问题
  • 支持多少个消费组个数? 不同实例规格支持的消费组个数不同,具体参见表1、表2和表3。 表1 实例规格说明(分布式消息服务RocketMQ版4.8.0) 资源规格 代理(个) 存储容量(GB/代理) 单个代理TPS 单个代理Topic数上限 单个代理消费组数上限 rocketmq.4u8g.cluster.small 1 ~ 2 300 ~ 60000 15000 2000 2000 rocketmq.4u8g.cluster 1 ~ 10 300 ~ 600000 20000 4000 4000 rocketmq.8u16g.cluster 1 ~ 10 300 ~ 900000 25000 8000 8000 rocketmq.12u24g.cluster 1 ~ 10 300 ~ 900000 28000 12000 12000 rocketmq.16u32g.cluster 1 ~ 10 300 ~ 900000 30000 16000 16000 表2 实例规格说明(分布式消息服务RocketMQ版5.x基础版单机) 资源规格 存储容量(GB) 实例TPS 实例Topic数上限 实例消费组数上限 rocketmq.b1.large.1 100 ~ 30000 500 50 500 表3 实例规格说明(分布式消息服务RocketMQ版5.x基础版集群) 资源规格 存储容量(GB) 实例TPS 实例Topic数上限 实例消费组数上限 rocketmq.b2.large.4 200 ~ 60000 2000 100 1000 rocketmq.b2.large.8 200 ~ 60000 4000 100 1000 rocketmq.b2.large.12 200 ~ 60000 6000 100 1000 父主题: 消费组问题
  • 前提条件 已创建RocketMQ实例,并记录实例详情中的“连接地址”(内网访问)/“公网连接地址”(公网访问)。内网访问的连接端口为8100,公网环境下访问的连接端口为8200。 客户端和RocketMQ实例之间网络已互通,具体网络要求参见连接RocketMQ网络要求页面。 已配置安全组。 已创建Topic。 客户端所在服务器已安装Java Development Kit 1.8.111或以上版本,并完成环境变量配置。
  • 命令行模式连接实例 登录客户端所在服务器。 下载“rocketmq-tutorial”示例软件包。 wget https://dms-demos.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip 解压“rocketmq-tutorial”。 unzip rocketmq-tutorial.zip (可选)如果RocketMQ实例开启了ACL访问控制,执行mqadmin命令时,需要鉴权。 切换到解压后的软件包目录下,在“conf/tools.yml”文件中,增加如下内容。 accessKey:******* secretKey:******* accessKey和secretKey表示在控制台“用户管理”页面,创建的用户名和密钥,具体可参见创建用户。 进入“rocketmq-tutorial/bin”目录。 cd rocketmq-tutorial/bin 运行生产普通消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" 使用Ctrl+C命令退出。 运行消费普通消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test 如需停止消费使用Ctrl+C命令退出。 运行生产带消息轨迹的消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" -m true 使用Ctrl+C命令退出。 运行消费消息示例,并发送消息轨迹。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test -m true 使用Ctrl+C命令退出。
  • 命令行模式连接实例 登录客户端所在服务器。 下载“rocketmq-tutorial”示例软件包。 wget https://dms-demos.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip 解压“rocketmq-tutorial”。 unzip rocketmq-tutorial.zip (可选)如果RocketMQ实例开启了ACL访问控制,执行mqadmin命令时,需要鉴权。 切换到解压后的软件包目录下,在“conf/tools.yml”文件中,增加如下内容。 accessKey:******* secretKey:******* accessKey和secretKey表示在控制台“用户管理”页面,创建的用户名和密钥,具体可参见创建用户。 进入“rocketmq-tutorial/bin”目录。 cd rocketmq-tutorial/bin 运行生产普通消息示例。 sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 sh mqadmin sendMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" 使用Ctrl+C命令退出。 运行消费普通消息示例。 sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 sh mqadmin consumeMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test 如需停止消费使用Ctrl+C命令退出。 运行生产带消息轨迹的消息示例。 sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 sh mqadmin sendMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" -m true 使用Ctrl+C命令退出。 运行消费消息示例,并发送消息轨迹。 sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“11.xxx.xxx.89:8200;11.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 sh mqadmin consumeMessage -n "11.xxx.xxx.89:8200;11.xxx.xxx.144:8200" -t topic-test -m true 使用Ctrl+C命令退出。
  • 前提条件 已创建RocketMQ实例,并记录实例详情中的“连接地址”(内网访问)/“公网连接地址”(公网访问)。内网访问的连接端口为8100,公网环境下访问的连接端口为8200。 客户端和RocketMQ实例之间网络已互通,具体网络要求参见连接RocketMQ网络要求页面。 已配置安全组。 已创建Topic。 客户端所在服务器已安装Java Development Kit 1.8.111或以上版本,并完成环境变量配置。
  • 约束与限制 使用场景 使用说明 CCE内容器日志采集 + CCI集群容器日志采集 CCE集群内的工作负载支持三种日志采集类型: 容器标准输出:采集集群内指定容器日志,仅支持Stderr和Stdout的日志。 容器文件日志:采集集群内指定容器内的文件日志。 节点文件日志:采集集群内指定节点路径的文件。 须知: 弹性到CCI的工作负载仅支持“容器文件日志”类型的采集策略。 不支持采集的日志文件类型 不支持容器中软链路径的日志采集。 pod通过指定系统、设备、cgroup、tmpfs等挂载目录下的日志无法被采集。 弹性CCI的pod关联多个日志采集策略 为了更好的采集日志,建议为pod预留充足内存。pod被第一个日志策略关联请预留至少50MiB内存。每增加一个关联日志采集策略,建议多预留5MiB内存。 超长日志采集 单条日志最大容量为250KB,超过会被丢弃。 日志采集文件名 audit.log,oss.icAgent.trace,oss.script.trace,audit_*.log这几类日志默认不采集,请勿使用以上几类命名采集日志。 超长日志文件名 容器中长度超过190的日志文件无法被采集。容器中长度在180~190范围的日志文件仅支持采集第一个文件。 日志采集速率 单个Pod单行日志采集速率不超过10000条/秒,多行日志不超过2000条/秒。 最大采集文件数 单个Pod所有日志采集策略监听的文件数不超过2000个文件。 容器停止前日志采集 当容器被停止时,如果出现因网络延迟、资源占用多等原因导致的采集延时,可能会丢失容器停止前的部分日志。
  • 操作步骤 安装“云原生日志采集插件”和“CCE 突发弹性引擎 (对接 CCI)”插件。 登录CCE控制台。 选择CCE集群,单击进入CCE集群总览页面。 在导航栏左侧单击“插件中心”,进入插件中心首页。 选择“CCE 突发弹性引擎 (对接 CCI)”插件,单击“安装”。 在安装配置中需要勾选“网络互通”功能。 选择“云原生日志采集插件”,单击“安装”。 创建弹性到CCI的负载。 在导航栏左侧单击“工作负载”,进入工作负载首页。 单击“创建工作负载”,具体操作步骤详情请参见创建工作负载。 填写基本信息并完成工作负载创建。更多创建弹性到CCI负载的方式,请参考调度负载到CCI。 配置日志采集策略。 在导航栏左侧单击“日志中心”,进入日志中心首页。 单击“日志采集策略”,进入日志采集策略创建的界面。 配置具体日志采集策略,完成后单击“确定”。 弹性到CCI的Pod不支持日志策略热更新,更新日志采集策略后需要重新部署弹性到CCI的Pod才可生效。 查看弹性到CCI的pod yaml。 为支持CCI pod日志被采集到日志中心,CCE插件CCE Log Collector为pod注入了如下四个annotation: annotation 示例值 coordinator.cci.io/inject-volumes '[{"name":"log-agent-conf","configMap":{"name":"log-agent-cci-logging-config","defaultMode":384},"namespace":"monitoring"},{"name":"log-agent-cert","secret":{"secretName":"log-agent-ca-secret","defaultMode":384},"namespace":"monitoring"}]' logconf.k8s.io/fluent-bit-configmap-reference monitoring-log-agent-cci-logging-config logconfigs.logging.openvessel.io '{"testcci001":{"container_files":{"container-1":"/var/test/*/*.log"},"regulation":""}}'' sandbox-volume.openvessel.io/volume-names log-agent-conf,log-agent-cert 在日志中心查看日志上报。 CCE集群日志中心更详细的用法可以参考CCE插件CCE Log Collector相关文档指导。
  • 简介 CCE集群成功将负载弹性到CCI运行起负载后,用户可以通过CCE的“CCE Log Collector”插件来收集pod的日志,提升工作负载的可观测性。通过阅读本章用户可以快速搭建日志平台,在CCE的日志观测CCI侧日志。 弹性到CCI的负载会默认开启容器标准输出采集并上报到 应用运维管理 AOM 每月赠送每个租户500M的免费日志存储空间,超过500M时将根据实际使用量进行收费,计费规则请参见产品价格详情。 若要关闭标准输出采集可通过在Pod annotation中指定log.stdoutcollection.kubernetes.io: '{"collectionContainers": []}'实现,参考示例: kind: Deployment apiVersion: apps/v1 metadata: name: test namespace: default spec: replicas: 1 template: metadata: annotations: log.stdoutcollection.kubernetes.io: '{"collectionContainers": []}' spec: containers: - name: container-1 image: nginx:latest
  • 添加日志存储 在创建负载的时候设置为容器添加日志存储。 容器内日志路径:即日志存储挂载到容器内的挂载路径,需要保证应用程序的日志输出路径与该路径一致,这样日志才能写入到日志存储卷中。 请确保日志存储卷路径在当前容器内是不存在的,否则会把容器内这个路径下的内容清空。 目前只支持日志路径下的“.log”、“.trace”、“.out”日志文件。 最多只能采集20个日志文件,也就是说您的日志最多只能输出到日志路径下的20个文件中。 日志存储空间:日志的存储空间大小。 AOM每月赠送每个租户500M的免费日志存储空间,超过500M时将根据实际使用量进行收费,计费规则请参见产品价格详情。 日志存储空间取值请确保为1或2,后台调api接口创建负载时,请确保取值为1GiB或2GiB。 该空间为免费空间,超时不采集,如果日志文件超过2G,请您提前做好转储。 图2 使用日志存储
  • 提示语简介 提示语是给大模型的指令。它可以是一个问题、一段文字描述,也可以是带有一堆参数的文字描述,用于在对话或文章中的一些简短的、不太明确的线索或暗示,推进引导对话的发展,或者增加故事的复杂性和深度。大模型会基于提示语所提供的信息,生成对应的文本或者图片。 通过对提示语进行结构、内容等维度的优化,将大模型的输入限定在一个特定的范围之中,进而更好地控制模型的输出,它通过提供清晰和具体的指令,引导模型输出生成高相关、高准确且高质量的文本对答内容,属于 自然语言处理 领域突破的重要部分。
  • 维度 Key Value rabbitmq_instance_id RabbitMQ实例 rabbitmq_node RabbitMQ实例节点 rabbitmq_queue RabbitMQ实例队列 rabbitmq_vhost RabbitMQ实例Vhost rabbitmq_vhost_exchange RabbitMQ实例Exchange rabbitmq_vhost_queue RabbitMQ实例Queue
  • 约束与限制 2020年7月1日之前购买的RabbitMQ实例,不支持在控制台开启插件,如果需要开启,请提交工单联系技术人员在后台开启插件。 2020年11月14日之前购买的RabbitMQ实例,不支持在控制台开启rabbitmq_consistent_hash_exchange插件,如果需要开启,请提交工单联系技术人员在后台开启插件。 开启插件过程中,不会重启实例。 rabbitmq_shovel和rabbitmq_federation插件在特定场景下才支持开启,具体如表2所示。 表2 支持开启插件的场景 实例 rabbitmq_shovel rabbitmq_federation 未开启SSL的单机实例 支持 支持 已开启SSL的单机实例 不支持 不支持 未开启SSL的集群实例 不支持 支持 已开启SSL的集群实例 不支持 不支持
  • 创建RabbitMQ Vhost(RabbitMQ WebUI) 登录RabbitMQ WebUI。 在顶部导航栏选择“Admin”,进入Admin页面。 在右侧导航栏选择“Virtual Hosts”,进入Virtual Hosts页面。 图4 Virtual Hosts 在“Add a new virtual host”区域,输入Vhost名称,单击“Add virtual host”。 图5 创建Vhost(WebUI) 创建成功后,在“All virtual hosts”区域,显示创建成功的Vhost。 图6 Vhost列表(WebUI)
  • 实施方案(双读模式迁移实例) 将原RabbitMQ实例的元数据迁移到目标RabbitMQ实例。 图1 迁移元数据 迁移步骤如下: 登录原RabbitMQ的WebUI页面,在“Overview”页签中,单击“Download broker definitions”,导出元数据。 图2 导出元数据 登录目标RabbitMQ的WebUI页面,在“Overview”页签中,单击“选择文件”,选择1.a中导出的元数据,单击“Upload broker definitions”,上传元数据。 图3 导入元数据 为目标RabbitMQ实例添加新的消费者,准备消费目标实例的消息。 图4 添加新消费者 为目标RabbitMQ实例添加新的生产者,下线原RabbitMQ实例的生产者,旧的消费者继续消费原RabbitMQ实例中的消息。 图5 迁移生产者 旧的消费者消费完原RabbitMQ实例的全部消息后,下线旧的消费者和原RabbitMQ实例。 图6 下线旧的消费者和原RabbitMQ实例
  • 迁移后检查 通过以下方法,确认原实例是否消费完成: 在RabbitMQ WebUI页面查看,如图7所示。 Overview视图中,可消费消息数(Ready)以及未确认的消息数(Unacked)都为0时,说明消费完成。 图7 RabbitMQ WebUI 调用API查看。 curl -s -u username:password -XGET http://ip:port/api/overview 参数说明: username:原实例登录RabbitMQ WebUI的账号 password:原实例登录RabbitMQ WebUI的密码 ip:原实例登录RabbitMQ WebUI的IP地址 port:原实例登录RabbitMQ WebUI的端口号 回显信息中“messages_ready”和“messages_unacknowledged”都为0时,说明消费完成。 图8 回显信息
  • 删除Vhost(RabbitMQ WebUI) 登录RabbitMQ WebUI。 在顶部导航栏选择“Admin”,进入Admin页面。 在右侧导航栏选择“Virtual Hosts”,进入Virtual Hosts页面。 图1 Virtual Hosts页面 单击待删除的Vhost名称,进入Vhost详情页。 图2 待删除的Vhost 在“Delete this vhost”区域,单击“Delete this virtual host”,弹出确认删除对话框。 图3 删除Vhost 单击“确定”,完成Vhost的删除。
  • 消费者确认 消费者确认是指服务端通过确认消息是否成功被消费者接收,来判断是否删除队列中的此消息。 消费者确认对数据可靠性十分重要,接收重要消息的消费应用程序在未处理完消息前不应确认消息,以便消费者有足够的时间处理消息,无需担心消息处理过程中由于消费者进程异常(如工作程序崩溃、重启等)导致消息丢失。 消费者确认在客户端上配置,通过配置basicConsume方法启用确认。在channel中启用消费者确认适用于大多数场景。 以下示例演示在Java客户端配置消费者确认(使用Channel#basicAck设置basic.ack为肯定): // this example assumes an existing channel instance boolean autoAck = false; channel.basicConsume(queueName, autoAck, "a-consumer-tag", new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { long deliveryTag = envelope.getDeliveryTag(); // positively acknowledge a single delivery, the message will // be discarded channel.basicAck(deliveryTag, false); } }); 未确认的消息缓存在内存中,如果未确认的消息过多,会导致内存使用率过高,此时可以在客户端配置预取值来限制消费者预取的消息数量,具体方法请参见配置RabbitMQ消息预取值。
  • 生产者确认 生产者确认,即服务端在收到来自生产者的消息时进行确认。 以下示例演示在Java客户端配置生产者确认: try { channel.confirmSelect() ; //将信道置为publisher confirm模式 //之后正常发送消息 channel.basicPublish("exchange", "routingKey" , null , "publisher confirm test" .getBytes()); if (!channel.waitForConfirms()) { System.out.println( "send message failed " ) ; // do something else.... } } catch (InterruptedException e) { e.printStackTrace() ; } 调用channel .waitForConfirms方法之后,会等待服务端确认,这是一种同步等待的方式,会对性能产生影响。如果生产者要满足at least once,就必须使用同步等待方式。
  • 实例是否支持修改可用区? 不支持,您可以重新购买实例,以满足可用区要求,然后进行实例元数据的迁移。 实例元数据的迁移步骤如下: 登录重新购买前的RabbitMQ实例的WebUI页面。 在“Overview”页签中,单击“Download broker definitions”,导出元数据。 登录重新购买的RabbitMQ实例的WebUI页面,在“Overview”页签中,单击“选择文件”,选择2中导出的元数据。 单击“Upload broker definitions”,上传元数据。 上传成功后,显示如下信息。 父主题: 实例问题
  • 可能原因三:用户名或密码错误 报错如下: [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.125.111 5672 user ******* Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: AC CES S_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile. at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:351) at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:64) 解决方法:修改用户名或密码。如果忘记密码,参考重置实例密码,重置密码。
  • 可能原因一:连接地址不正确 VPC内访问场景下,连接地址不正确时,报错如下: [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.125.110 5672 user ******* Exception in thread "main" java.net.NoRouteToHostException: No route to host (Host unreachable) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 公网访问场景下,连接地址不正确时,报错如下: [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 139.xxx.178 5672 user ******* Exception in thread "main" java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 解决方法:在RabbitMQ控制台的“基本信息”页面,获取“内网连接地址”/“公网连接地址”,修改连接实例代码中的连接地址。
共100000条