参考:ES报错— Unable to parse response body for Response-优快云博客
如果不想处理的话,就简单点:
将 IOException的异常调整到 Exception异常,同时将记录记录起来,不抛异常。
项目启动后,rabbitmq 还是会不断接收异常信息,可以在rabbitmq里清空下消息队列 或者由 专门的错误队列进行接收处理。
报错信息:
es删除文档失败,异常信息:ElasticsearchStatusException[Unable to parse response body]; nested: ResponseException[method [DELETE], host [http://192.168.36.128:9200], URI [/hotel22/_doc/6?timeout=1m], status line [HTTP/1.1 404 Not Found]
{"_index":"hotel22","_id":"6","_version":1,"result":"not_found","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":31740,"_primary_term":1}];
2024-05-10 10:51:50.065 WARN 12932 --- [ntContainer#1-1] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed.
org.springframework.amqp.rabbit.support.ListenerExecutionFailedException: Listener method 'public void com.jxgy.listeners.listen.HotelListener.listenHotelDelete(java.lang.Long)' threw exception
at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:247) ~[spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandlerAndProcessResult(MessagingMessageListenerAdapter.java:191) ~[spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:137) ~[spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1630) ~[spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1549) ~[spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1537) ~[spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:1528) ~[spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1472) ~[spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:977) [spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:923) [spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1600(SimpleMessageListenerContainer.java:83) [spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.mainLoop(SimpleMessageListenerContainer.java:1298) [spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1204) [spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_221]
Caused by: java.lang.RuntimeException: ElasticsearchStatusException[Unable to parse response body]; nested: ResponseException[method [DELETE], host [http://192.168.36.128:9200], URI [/hotel22/_doc/6?timeout=1m], status line [HTTP/1.1 404 Not Found]
{"_index":"hotel22","_id":"6","_version":1,"result":"not_found","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":31740,"_primary_term":1}];
at com.jxgy.listeners.es_deal.Hotel_ESDeal.deleteById(Hotel_ESDeal.java:41) ~[classes/:na]
at com.jxgy.listeners.listen.HotelListener.listenHotelDelete(HotelListener.java:45) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_221]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_221]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_221]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_221]
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:171) ~[spring-messaging-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:120) ~[spring-messaging-5.2.15.RELEASE.jar:5.2.15.RELEASE]
at org.springframework.amqp.rabbit.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:53) ~[spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:239) ~[spring-rabbit-2.2.18.RELEASE.jar:2.2.18.RELEASE]
... 13 common frames omitted
Caused by: org.elasticsearch.ElasticsearchStatusException: Unable to parse response body
at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:1773) ~[elasticsearch-rest-high-level-client-7.6.2.jar:7.6.2]
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1524) ~[elasticsearch-rest-high-level-client-7.6.2.jar:7.6.2]
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1484) ~[elasticsearch-rest-high-level-client-7.6.2.jar:7.6.2]
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1454) ~[elasticsearch-rest-high-level-client-7.6.2.jar:7.6.2]
at org.elasticsearch.client.RestHighLevelClient.delete(RestHighLevelClient.java:945) ~[elasticsearch-rest-high-level-client-7.6.2.jar:7.6.2]
at com.jxgy.listeners.es_deal.Hotel_ESDeal.deleteById(Hotel_ESDeal.java:33) ~[classes/:na]
... 22 common frames omitted
Suppressed: org.elasticsearch.common.ParsingException: Failed to parse object: expecting field with name [error] but found [_index]
at org.elasticsearch.common.xcontent.XContentParserUtils.ensureFieldName(XContentParserUtils.java:50) ~[elasticsearch-7.6.2.jar:7.6.2]
at org.elasticsearch.ElasticsearchException.failureFromXContent(ElasticsearchException.java:592) ~[elasticsearch-7.6.2.jar:7.6.2]
at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:169) ~[elasticsearch-7.6.2.jar:7.6.2]
at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:1793) ~[elasticsearch-rest-high-level-client-7.6.2.jar:7.6.2]
at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:1770) ~[elasticsearch-rest-high-level-client-7.6.2.jar:7.6.2]
... 27 common frames omitted
Caused by: org.elasticsearch.client.ResponseException: method [DELETE], host [http://192.168.36.128:9200], URI [/hotel22/_doc/6?timeout=1m], status line [HTTP/1.1 404 Not Found]
{"_index":"hotel22","_id":"6","_version":1,"result":"not_found","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":31740,"_primary_term":1}
at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:283) ~[elasticsearch-rest-client-7.6.2.jar:7.6.2]
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:261) ~[elasticsearch-rest-client-7.6.2.jar:7.6.2]
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:235) ~[elasticsearch-rest-client-7.6.2.jar:7.6.2]
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1514) ~[elasticsearch-rest-high-level-client-7.6.2.jar:7.6.2]
... 26 common frames omitted