我正在 Google 云中建立一个解决方案。我需要一个 RabbitMQ 队列代理和一个用 .NET Core 2.2 开发的 WebAPI。我的想法是让 WebAPI 连接到 RabbitMQ 以接收消息。
我已将 RabbitMQ 与 GKE 一起安装在使用 RabbitMQ Cluster 的 kubernetes 集群中,该集群是在 Marketplace 中获得的。我已经在Cloud Run中安装了WebAPI。这两个组件都是以标准的方式提出的,没有任何特殊性的发布。
WebAPI使用5001端口进行HTTP流量,显然,订阅RabbitMQ接收消息的监听器使用5672端口。
问题是,将 WebAPI 上传到 Cloud Run 中并不奏效,显然是因为 Cloud Run 只为 HTTP 流量暴露一个端口,因此另一个端口 5672 被阻止。
通过将相同的 WebAPI 挂载到 kubernetes 上的容器中,它确实暴露了 5001 和 5672 端口,并且工作正常。
能否将WebAPI发布到Cloud Run中,除了暴露5001端口用于HTTP流量外,还暴露5672端口(在这种情况下打开TCP连接),从而能够连接到RabbitMQ?
我有一个想法,让WebAPI连接到RabbitMQ来接收消息。
Cloud Run(完全托管)总是通过 HTTPS 将服务暴露在单一端口(在 :443 上)。