热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RabbitMQ客户端:指定的端点均不可达

我正在研究ASP.NETCoreWebApi微服务。我将项目部署在AzureDevSpace上,并且除非我开始使用Ra

我正在研究ASP.NET Core WebApi微服务。我将项目部署在Azure Dev Space上,并且除非我开始使用RabbitMQ,否则它运行良好。使用RabbitMQ设置,该项目可以在localhost上正常运行。但是我不知道如何在DevSpaces上部署RabbitMQ。我有以下 Docker File ,可用于通过“ azds up”运行。该项目在我的本地计算机上运行良好。

FROM microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.2-sdk-nanoserver-1803 AS build
WORKDIR /src
COPY ["src/Customer.WebApi/Customer.WebApi.csproj","src/Customer.WebApi/"]
COPY ["src/Customer.WebApi/nuget.config","src/Customer.WebApi/"]
RUN dotnet restore "src/Customer.WebApi/Customer.WebApi.csproj"
COPY . .
WORKDIR "/src/src/Customer.WebApi"
RUN dotnet build "Customer.WebApi.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "Customer.WebApi.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet","Customer.WebApi.dll"]

我尝试使用以下命令在与其他WebApi微服务相同的名称空间中部署RabbitMQ:

kubectl --namespace=devspace-dev create -f rabbitmq.yml

使用以下 rabbitmq.yml

apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
name: rabbitmq
spec:
ports:
- port: 15672
protocol: TCP
targetPort: 15672
selector:
run: rabbitmq
status:
loadBalancer: {}
---
apiVersion: v1
kind: pod
metadata:
creationTimestamp: null
labels:
run: rabbitmq
name: rabbitmq
spec:
containers:
- image: rabbitmq:management
name: rabbitmq
ports:
- containerPort: 15672
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}

我获得了一个具有15672端口的外部端点,但是通过访问它,它只会显示连接超时。

我还在Kubernetes仪表板上获得了Rabbitmq服务的以下内部端点:

rabbitmq.devspace-dev:15672 TCP

然后我更改我的 appsettings.json

"AzureServiceBusEnabled": false,"SubscriptionClientName": "Invoicing","CheckUpdateTime": "30000","ApplicationInsights": {
"InstrumentationKey": ""
},"EventBusRetryCount": 5,"OrderClientName": "Invoicing","EventBusConnection": "rabbitmq.devspace-dev","EventBususername": "guest","EventBusPassword": "guest","UseVault": false,"Vault": {
"Name": "eshop","ClientId": "your-clien-id","ClientSecret": "your-client-secret"
}

然后更新我的DevSpace API时,得到 RabbitMQ客户端:没有指定的端点可访问。错误,API崩溃了。

这是在Kubernetes上使用RabbitMQ的正确方法吗? Internet上的所有教程都没有解决如何将其与Azure Dev Space正确集成的问题。有人可以帮我解决吗?

编辑:当我运行azds时,该API成功部署,但是当执行并开始连接到Rabbitmq客户端时,它便崩溃了。


在Dockerfile中设置RabbitMQ用户名和密码

FROM rabbitmq:3-management
# Define environment variables.
ENV RABBITMQ_DEFAULT_USER user
ENV RABBITMQ_DEFAULT_PASS password
COPY init.sh .
EXPOSE 15672
# Define default command
RUN ["chmod","+x","init.sh"]
CMD ["/init.sh"]

这是init.sh脚本

#!/bin/sh
# Create Rabbitmq user
(sleep 20 && \
rabbitmqctl add_user user password ; \
rabbitmqctl set_user_tags user administrator ; \
echo "Added user" ; \
rabbitmqctl set_permissions -p / user ".*" ".*" ".*" ; \
rabbitmq-plugins --offline enable rabbitmq_peer_discovery_k8s ; \
echo "*** User 'user' with password 'password' completed. ***" ; \
echo "*** Log in the WebUI at port 15672 (example: http:/localhost:15672) ***") &
# $@ is used to pass arguments to the rabbitmq-server command.
# For example if you use it like this: docker run -d rabbitmq arg1 arg2,# it will be as you run in the container rabbitmq-server arg1 arg2
rabbitmq-server $@

您可以在docker.yaml中公开您的端口。签出this链接。

用户名和密码是必须的,因为来宾身份验证只能在localhost上运行。如果您通过IP地址访问Rabbitmq,则访客凭据将不起作用。让我知道怎么回事!


推荐阅读
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 探讨 `org.openide.windows.TopComponent.componentOpened()` 方法的应用及其代码实例分析 ... [详细]
  • 本课程详细解析了Spring AOP的核心概念及其增强机制,涵盖前置增强、后置增强和环绕增强等类型。通过具体示例,深入探讨了如何在实际开发中有效运用这些增强技术,以提升代码的模块化和可维护性。此外,还介绍了Spring AOP在异常处理和性能监控等场景中的应用,帮助开发者更好地理解和掌握这一强大工具。 ... [详细]
  • 在Maven项目中高效集成JaCoCo代码覆盖率插件,以显著提高测试质量。首先,需在项目的`pom.xml`文件中添加JaCoCo和JUnit的依赖配置,确保测试框架和覆盖率工具的无缝结合。通过这种方式,开发者不仅能够执行单元测试,还能获取详细的代码覆盖率报告,从而优化测试策略和代码质量。 ... [详细]
  • 在Java应用程序中调用`response.getStatus()`方法时遇到了`NoSuchMethodError`异常,经过分析,初步判断为依赖冲突问题。通过检查项目依赖树发现,当前项目版本与某些库的版本不兼容,导致该方法无法被正确识别。建议通过更新相关依赖版本或使用依赖管理工具(如Maven或Gradle)来解决此问题,确保所有依赖项版本一致且兼容。 ... [详细]
  • 如何使用 net.sf.extjwnl.data.Word 类及其代码示例详解 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用
    开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 利用 JavaScript 实现定时任务的高效执行方法(代码可直接复用) ... [详细]
  • 在Spring与Ibatis集成的环境中,通过Spring AOP配置事务管理至服务层。当在一个服务方法中引入自定义多线程时,发现事务管理功能失效。若不使用多线程,事务管理则能正常工作。本文深入分析了这一现象背后的潜在风险,并探讨了可能的解决方案,以确保事务一致性和线程安全。 ... [详细]
  • 成功实现Asp.Net MVC3网站与MongoDB数据库的高效集成
    我们成功地构建了一个基于Asp.NET MVC3框架的网站,并实现了与MongoDB数据库的高效集成。此次更新不仅完善了基本的创建和显示功能,还全面实现了数据的增删改查操作。在创建功能方面,我们修复了之前代码中的错误,确保每个属性都能正确生成。此外,我们还对数据模型进行了优化,以提高系统的性能和稳定性。 ... [详细]
  • 如何构建基于Spring MVC框架的Java Web应用项目
    在构建基于Spring MVC框架的Java Web应用项目时,首先应创建一个新的动态Web项目。接着,需将必要的JAR包导入至WebContent/WEB-INF/lib目录下,确保包括Spring核心库及相关依赖。如遇缺失的JAR包,可向社区求助或通过Maven等工具自动下载。正确配置后,即可开始搭建应用结构与功能模块。 ... [详细]
  • 本文深入剖析了ScheduledThreadPoolExecutor的并发执行机制及其源代码,详细解读了该线程池如何在指定延时或定期执行任务,探讨了其内部的工作原理和优化策略,为开发者提供了宝贵的参考和实践指导。 ... [详细]
author-avatar
hfy2409553
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有