2016-10-11 4 views
0

다음과 같이 소개 드리겠습니다. 개발자가 아닙니다. 현재 Mulesoft를 사용하여 여러 시스템 (원래 아웃소싱 개발자가 개발 한 응용 프로그램)을 통합하고 있습니다. 응용 프로그램의 일부는 시스템에서 공통적 인 레코드를 병합하는 것입니다. 이를 위해 연결된 주소에 레코드 이름과 지오 코드를 사용하고 있습니다. 지난 주까지 이것은 잘 작동했습니다. 이제 응용 프로그램의이 부분이 실행될 때 오류가 발생합니다. 실패 특정 통화에서 디버그 로그는 다음과 같습니다 문제는 내가 어떤 문제없이 동일한 주소에 대한 매뉴얼 전화를 걸 수, 지오 코딩 API 자체 될 것 같지 않습니다Google 지오 코딩 API가 500 내부 서버 오류를 반환합니다.

[2016-10-11 16:02:06.163] DEBUG com.ning.http.client.providers.grizzly.AsyncHttpClientFilter [[tbosa-rpm].DefaultSftpConnector.receiver.01]: (t:null) REQUEST: HttpRequestPacket (method=GET 
url=/maps/api/geocode/json 
query=key=[REMOVED]&address=%[REMOVED]%20[REMOVED]%20[REMOVED]%2CSPRING%20BRANCH%2CTX%22 
protocol=HTTP/1.1 
content-length=-1 
headers=[ 
MULE_CORRELATION_SEQUENCE=969 
MULE_CORRELATION_ID=bd4249f0-8fcb-11e6-9620-12fd3e455356 
MULE_CORRELATION_GROUP_SIZE=4375 
Host=maps.googleapis.com:443 
User-Agent=AHC/1.0 
Connection=keep-alive 
Accept=*/*] 
) 
[2016-10-11 16:02:06.164] DEBUG org.mule.module.http.internal.HttpMessageLogger [[tbosa-rpm].DefaultSftpConnector.receiver.01]: (t:null) REQUESTER 
GET /maps/api/geocode/json?key=[REMOVED]&address=%[REMOVED]%20[REMOVED]%20[REMOVED]%2CSPRING%20BRANCH%2CTX%22 HTTP/1.1 

MULE_CORRELATION_SEQUENCE: 969 

MULE_CORRELATION_ID: bd4249f0-8fcb-11e6-9620-12fd3e455356 

MULE_CORRELATION_GROUP_SIZE: 4375 

Host: maps.googleapis.com:443 

User-Agent: AHC/1.0 

Connection: keep-alive 

Accept: */* 

Content-Type: application/json; charset=UTF-8 


[2016-10-11 16:02:07.684] DEBUG org.mule.module.http.internal.HttpMessageLogger [[tbosa-rpm].http.requester.GeocoderRequest.worker(1)]: (t:null) REQUESTER 
HTTP/1.1 500 Internal Server Error 

Content-Type: application/json; charset=UTF-8 

Date: Tue, 11 Oct 2016 16:02:07 GMT 

Pragma: no-cache 

Expires: Fri, 01 Jan 1990 00:00:00 GMT 

Cache-Control: no-cache, must-revalidate 

Access-Control-Allow-Origin: * 

Server: mafe 

X-XSS-Protection: 1; mode=block 

X-Frame-Options: SAMEORIGIN 

Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32" 

Accept-Ranges: none 

Vary: Accept-Language,Accept-Encoding 

Transfer-Encoding: chunked 

35 

{ 
"results" : [], 
"status" : "UNKNOWN_ERROR" 
} 


0 

[2016-10-11 16:02:07.684] DEBUG com.ning.http.client.providers.grizzly.AhcEventFilter [[tbosa-rpm].http.requester.GeocoderRequest.worker(1)]: (t:null) RESPONSE: HttpResponsePacket (
status=500 
reason=Internal Server Error 
protocol=HTTP/1.1 
content-length=-1 
committed=false 
headers=[ 
content-type=application/json; charset=UTF-8 
date=Tue, 11 Oct 2016 16:02:07 GMT 
pragma=no-cache 
expires=Fri, 01 Jan 1990 00:00:00 GMT 
cache-control=no-cache, must-revalidate 
access-control-allow-origin=* 
server=mafe 
x-xss-protection=1; mode=block 
x-frame-options=SAMEORIGIN 
alt-svc=quic=":443"; ma=2592000; v="36,35,34,33,32" 
accept-ranges=none 
vary=Accept-Language,Accept-Encoding 
transfer-encoding=chunked] 
) 

. 연결이 느려지므로 초당 요청의 제한에 맞춰서는 안됩니다. API 호출을 제어하는 ​​응용 프로그램의 코드 조각입니다.

<flow name="rpm-geocode-lookup" processingStrategy="synchronous"> 
    <set-payload value="#[payload.addressLine1],#[payload.city],#[payload.state]" doc:name="Set Location"/> 
    <ee:cache cachingStrategy-ref="GeocoderCachingStrategy" doc:name="Geocoder Cache"> 
     <json:object-to-json-transformer doc:name="Object to JSON"/> 
     <logger level="DEBUG" category="com.tbosa.esb.rpm" message="Making call to Geocoder for #[payload]" doc:name="Not Cached"/> 
     <http:request config-ref="GeocoderRequest" path="/geocode/json" method="GET" doc:name="Geocoder Request"> 
      <http:request-builder> 
       <http:query-param paramName="key" value="${geocoder.key}"/> 
       <http:query-param paramName="address" value="#[payload]"/> 
      </http:request-builder> 
     </http:request> 
     <json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/> 
     <choice doc:name="Choice"> 
      <when expression="#[payload.status == 'OK' || payload.results.size() &gt; 0]"> 
       <set-payload value="#[new java.lang.String(payload.results[0].geometry.location.lat) + payload.results[0].geometry.location.lng]" doc:name="Latitude+Longitude"/> 
      </when> 
      <otherwise> 
       <logger message="Geocoder did not return any results. Result: #[payload]" level="WARN" category="com.tbosa.esb.rpm" doc:name="Logger"/> 
       <set-payload value="''" doc:name="Blank Value"/> 
      </otherwise> 
     </choice> 
     <expression-component doc:name="Expression">Thread.sleep(${geocoder.throttle.delay});</expression-component> 
    </ee:cache> 
    <exception-strategy ref="EmailExceptionStrategy" doc:name="Exceptions"/>   
</flow> 

응용 프로그램이 변경되지 않았습니다. 우리는 9 개월 동안이 프로그램을 성공적으로 운영해 왔기 때문에 그 문제가 어디에 있는지 확신 할 수 없습니다. 나는 Mulesoft와 관련된 문제에 솔직히 의지하고있다. 그러나 그들은 이것이 API의 문제라고 말해 주려고한다. 생각?

답변

1

500 오류는 요청 처리 중 Google 측에서 문제가 발생했음을 나타냅니다. 잠시 후 요청을 다시 시도 했습니까?

애플리케이션에 맞는 Google IP 주소를 찾아보십시오. 응용 프로그램을 실행하는 시스템의 traceroute maps.googleapis.comping maps.googleapis.com을 사용할 수 있습니다.

500 오류가 계속되면 traceroute 및 ping의 결과, 문제를 설명하는 샘플 HTTP 요청, 공개 IP 주소 및 프로젝트 번호로 공개 이슈 트래커에서 문제를 제기 할 것을 제안합니다.

https://code.google.com/p/gmaps-api-issues/

는 희망이 도움이!

+0

고마워요! 티켓을 제출 한 다른 이슈가 같은 사람이있었습니다. 물론 구글의 누군가가 SOP를 통해 상태 코드 500으로 돌아 오는 메시지를 보냈지 만 그렇다고 답했다. – Moody