Apollo搭建踩过的那些坑

环境:

阿里云 CentOS

Java 8

Apollo 1.1

问题一

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class com.ctrip.framework.apollo.tracer.Tracer
      at com.ctrip.framework.apollo.build.ApolloInjector.getInstance(ApolloInjector.java:37)
      at com.ctrip.framework.apollo.ConfigService.getManager(ConfigService.java:25)
      at com.ctrip.framework.apollo.ConfigService.getConfig(ConfigService.java:61)

问题解析:

只在Maven中导入了client依赖

问题解决:

导入同版本的apollo-core依赖

问题二

Caused by: com.ctrip.framework.apollo.exceptions.ApolloConfigException: Unable to initialize Apollo Spring Injector!
	at com.ctrip.framework.apollo.spring.util.SpringInjector.getInjector(SpringInjector.java:24)
	at com.ctrip.framework.apollo.spring.util.SpringInjector.getInstance(SpringInjector.java:37)
	... 14 more
Caused by: java.lang.NoClassDefFoundError: com/google/inject/Module
	at com.ctrip.framework.apollo.spring.util.SpringInjector.getInjector(SpringInjector.java:22)
	... 15 more

问题解析:

从报错信息可以看到是缺少部分类,通过查询类名得知这几个依赖

问题解决:

除了core和client,还需要导入guava等多个依赖

        <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>23.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.inject/guice -->
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>4.2.2</version>
        </dependency>

问题三

Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository, 
reason: Load Apollo Config failed - appId: bitongchong_bos, cluster: default, namespace: application, 
url: http://此处是私有ip:8080/configs/bitongchong_bos/default/application?ip=192.168.102.1&messages=%7B%22details%22%3A%7B%22bitongchong_bos%2Bdefault%2Bapplication%22%3A6%7D%7D&releaseKey=20190803112627-2b5dd0e414976d16 
[Cause: Could not complete get operation [Cause: connect timed out]]

问题解析:

这个是部署在云服务器上时才会遇到的坑,这个时候eureka实体地址不经过设置,会直接被解析为云服务器内网地址,而非公网地址,因此不能够正常访问,需要仔细查看是否存在这个问题。

问题解决:

手动进行设置eureka 实体地址,以quick-start那个教程的流程为例,需要在demo.sh中的check Java手动指定公网地址

-Deureka.instance.ip-address=公网地址

问题四

2020-03-04 01:34:28.169  WARN 21840 --- [           main] c.c.f.a.i.AbstractConfigRepository       : Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository, reason: Get config services failed from http://xx.xx.xx.xx:8070/services/config?appId=SPOC_Platform&ip=192.168.102.1 [Cause: Could not complete get operation [Cause: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $ [Cause: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $]]]
2020-03-04 01:34:30.511  WARN 21840 --- [           main] c.c.f.a.i.LocalFileConfigRepository      : Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Get config services failed from http://xx.xx.xx.xx:8070/services/config?appId=SPOC_Platform&ip=192.168.102.1 [Cause: Could not complete get operation [Cause: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $ [Cause: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $]]]

问题解析:

这个是未对apollo.meta 属性进行正确赋值,必须是eureka的地址和端口,就是你输入这个url+端口的时候跳转到的是eureka这个界面,而非apollo管理页面,否则必定报错

问题解决:

如果用的是quick-start这个官方教程的话,将8070修改为8080即可

-Dapollo.meta=http://我的服务器地址:8080 -Denv=dev

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Apache Apollo服务器是一款高性能的消息代理服务器,可以用于构建分布式系统中的消息传递机制。以下是Apache Apollo服务器搭建的步骤: 1. 下载Apache Apollo服务器的安装包,并解压到指定的目录。 2. 配置Apollo服务器的环境变量,将安装目录添加到系统的PATH变量中。 3. 启动Apollo服务器,可以使用命令行启动或者使用脚本启动。 4. 配置Apollo服务器的参数,包括端口号、用户名密码等。 5. 创建消息队列和主题,可以使用Web管理界面或者命令行工具创建。 6. 使用客户端程序连接到Apollo服务器,发送和接收消息。 7. 监控和管理Apollo服务器,可以使用Web管理界面或者命令行工具进行监控和管理。 以上是Apache Apollo服务器搭建的基本步骤,需要根据具体的需求进行配置和调整。 ### 回答2: Apache Apollo是一个高性能的消息代理服务器,它采用了先进的AMQP 1.0协议,使得它在数据处理速度和灵活性方面都能有很好的表现。下面简单介绍一下Apache Apollo服务器的搭建。 1. 下载和解压缩 首先,需要从官方网站下载Apache Apollo服务器的安装包,并解压缩到本地目录。 2. 配置服务器 接下来,需要在解压缩后的目录中,找到conf文件夹下面的apollo.xml文件,并将其中的以下内容进行修改: - broker.xml中的transportConnector和virtualHost元素,调整为自己需要的端口和地址,这里可以指定多个端口和地址。 - login.config中的用户账号信息。 3. 启动服务器 完成上述配置后,就可以启动Apache Apollo服务器了。在解压缩后的目录下,执行以下命令即可启动服务器: ./bin/apollo-broker run 4. 设置开机自启 为了实现开机自启动,可以在/etc/init.d目录中创建一个脚本,然后在其中使用启动服务器的命令,以达到开机自启的效果。 以上就是简单的Apache Apollo服务器的搭建过程,需要注意的是,服务器的配置文件需要按照实际需求进行设置,例如可以设置消息队列的大小,调整网络缓存等等,以提升服务器的性能和可靠性。 ### 回答3: Apache Apollo是一个高性能、可靠的消息代理服务器,适用于处理大规模的消息流和事件处理。它是由Apache Foundation开发和维护的,完全开源,是一种灵活的、易于使用的消息传递解决方案。 在进行Apache Apollo服务器的搭建之前,需要安装Java环境,以便启动Apollo服务器。可以通过以下步骤来搭建Apache Apollo服务器: 第一步:下载和解压Apollo软件包 可以从Apache Apollo的官方网站上下载需要的软件包。解压缩文件后,进入bin目录,并运行脚本apollo-broker命令来启动Apollo服务器。在Windows系统下,可以双击运行apollo.bat文件。 第二步:配置Apollo服务器 可以通过修改conf目录下的apollo.xml文件来进行Apache Apollo服务器的配置。在这个配置文件中,可以配置相应的端口、日志记录、身份验证、消息队列等。 第三步:添加消息队列 在Apollo服务器上,可以添加多个消息队列。可以使用apollo script命令来创建新的消息队列。例如,如果要创建一个名为“MyQueue”的新队列,可以运行如下命令: apollo create /queues/MyQueue --type queue 第四步:测试Apache Apollo服务器 可以使用web管理界面或命令行工具来测试Apache Apollo服务器。在web管理界面下,可以访问http://localhost:61680来查看服务器的状态和队列的相关信息。在命令行下,运行apollo-broker命令,可以查看服务器运行日志和队列的报告信息。 需要注意的是,Apache Apollo服务器的配置和使用都需要一定的技术水平和经验。如果遇到问题,可以查看官方文档或论坛进行交流和帮助。同时,应该加强对服务器的安全性和保密性,避免信息泄露和攻击。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值