2023-06-09 02:07:21.282 ERROR 10768 --- [rget_eureka02-4] c.n.e.cluster.ReplicationTaskProcessor : Batch update failure with HTTP status code 404; discarding 1 replication tasks
2023-06-09 02:07:21.282 WARN 10768 --- [rget_eureka02-4] c.n.eureka.util.batcher.TaskExecutors : Discarding 1 tasks of TaskBatchingWorker-target_eureka02-4 due to permanent error
今天在做eureka服务集群的时候启动项设置serviceUrl:defaultZone的时候请求路径没有以/eureka结尾,导致踩了这个大坑,但是也理解更深了。解决方案就是服务端defaultZone一定要以/eureka作为项目路径,而且不要设置上下文路径。
注意事项
第一:不要设置context-path,即使设置也只能写个/
第二:uri一定要以/eureka结尾
这个问题其实是路径没写对,出现的具体情况在做eureka服务端集群的时候,关掉一个服务端,另一个服务端就会出现这个提示,虽然不影响使用,但一直打印挺糟心。一定要确保每个服务端defaultZone的uri最后是/eureka。我的理解是eureka默认以/eureka为context-path,他在服务注册的时候默认会去请求以/eureka为结尾的接口,但是如果是第一次同时启动,会以自己写的路径去请求,即没有以/eureka结尾的请求,所以这个时候没有打印错误。当一个服务挂掉的时候,他的心跳检测定时任务就会给你的路径拼接上/eureka,所以这个时候的请求就出现循环打印日志里的404了。如果真是这样这个设计真是够坑的,不知道我说的对不对,望大佬指教。