Serverless 应用引擎问题,帮忙看下?SAE内连接rabbit报错[阿里云Serverless]

Serverless 应用引擎问题,帮忙看下?2023-07-12 17:45:22.257 ERROR [hua5-service-content,,,] 1 — [103.37.188:5672] o.s.a.r.c.CachingConnectionFactory : Channel shutdown: channel error; protocol method: #method(reply-code=406, reply-text=ExchangeInBuilt[amq.direct], ReqId:64AE763241463136001869B4, ErrorHelp[exchange=amq.direct, https://c.tb.cn/F3.Zro5uI], class-id=40, method-id=10)
SAE内连接rabbit报错
应用ID:87de39e9-9514-487a-aeb9-37ff01cc9aa5

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 根据您提供的错误日志,看起来是在通过 Serverless 应用引擎(SAE)连接 RabbitMQ 时遇到了问题。具体的错误信息是 Channel shutdown: channel error; protocol method: #method(reply-code=406, reply-text=ExchangeInBuilt[amq.direct]

    这个错误表示 RabbitMQ 的交换机(Exchange) amq.direct 在您的应用中无法访问。可能的原因包括以下几种:

    1. 权限配置不正确:请确保您的应用有足够的权限来访问 RabbitMQ 中的交换机。检查您在连接 RabbitMQ 时使用的用户名和密码是否正确,并且具有发布消息到交换机的权限。

    2. 交换机不存在:确认一下 amq.direct 这个交换机是否真的存在于 RabbitMQ 中。如果不存在,请确保您正在访问正确的交换机名称,或者创建所需的交换机。

    3. 网络连接问题:如果您的 SAE 应用与 RabbitMQ 之间存在网络隔离或防火墙限制,可能会导致连接失败。请确保网络连接正常,并允许来自 SAE 应用的流量通过 RabbitMQ 的端口。

    以上是一些可能导致该错误的常见原因。建议您逐一排查这些问题,并根据需要进行相应的调整和修复。

  2. 看来你的SAE函数应用正在尝试连接RabbitMQ消息队列,但是报错了。具体错误信息是:

    leaf
    Copy
    Channel shutdown: channel error; protocol method: #method(reply-code=406,
    reply-text=ExchangeInBuilt[amq.direct], ReqId:64AE763241463136001869B4,
    ErrorHelp[exchange=amq.direct, https://c.tb.cn/F3.Zro5uI%5D, class-id=40, method-id=10)
    这里面有一些有用的线索:

    reply-code=406表示的是 RabbitMQ 的 HTTP 状态码,表示”Not Acceptable”。说明 RabbitMQ 拒绝了连接。

    amq.direct 是 RabbitMQ 默认的 direct 交换机。

    ErrorHelp 有一个链接 https://c.tb.cn/F3.Zro5uI ↗ ,这个应该是 RabbitMQ 的帮助文档。

    基于这些信息,可以初步确定是SAE函数应用在尝试连接RabbitMQ时出现了问题。

    可能的原因有:

    函数应用配置的RabbitMQ地址、用户名密码错误
    函数应用缺少连接RabbitMQ所需的权限
    RabbitMQ服务本身存在问题
    接下来可以您可以:

    检查函数应用中RabbitMQ的连接配置是否正确
    检查函数应用是否具有连接RabbitMQ的权限
    查看RabbitMQ控制台,查看是否有报警和错误
    查看RabbitMQ日志,看是否有类似的连接错误