2010-07-06 3 views
0

SOAP을 사용하여 Salesforce.com을 처리하고 getServertimestamp() 호출에서 검색 한 타임 스탬프를 사용하여 getUpdated() 호출을 사용하고 있습니다.APEX API를 통해 Salesforce.com에 복제 지연이 있습니까?

Sandbox 환경에서 변경 사항을 저장 한 후 몇 분 안에 프로세스 확인을 보았습니다. 폴링을보고 getUpdated 호출에서 <ids>을 얻지 않고 다음 폴링에서 수정 된 ID가 표시됩니다.

SFDC에 백엔드 복제 지연이 있습니까? 나는 거기에 있다고 생각하지만, 그것의 크기를 확인하는데 운이 없었습니다. 다른 사람이 이것을 경험 했습니까?

덧붙여 말하자면, 이것은 환경의 샌드 박스 복사본에 모두 포함되어있어 문제를 더욱 혼란스럽게 할 수 있습니다.

업데이트 : 방금 테스트 한 결과 변경되었으며 48 초 후에 설문 조사가 실행되어 업데이트 된 개체가 표시되지 않았습니다. 그러나 1 분 48 초 후 그것을 보았습니다. 그래서 그것은 하나의 데이터 포인트입니다. (필자의 SOAP 엔드 포인트와 웹 인터페이스는 모두 SFDC에서 동일한 서버에서 실행되고 있음을 압니다. tapp0).

+0

웹 서비스 API의 일부인 복제 API를 사용하고 있습니까? 또는 엔터프라이즈/파트너 WSDL을 사용하여 libs를 생성하고 있습니까? –

+0

중간에 SOAP 호출을 통해 엔터프라이즈 WSDL을 사용합니다. – geoffc

+1

흠, 나는 그것을 조사했지만 아무것도 찾을 수 없습니다. 롤업 필드 계산과 같은 시스템의 일부 부분에는 지연이 있지만 포럼에서 물어 보거나 트위터 태그 #askforce를 사용해야한다고 말하고 싶습니다. Simon Fell이 최선의 방법입니다. –

답변

1

변경 기록에는 지체가 없지만 지정된 시간을 가장 가까운 분으로 반올림하므로 getUpdate/getDeleted 호출은 가장 최근의 분으로 반올림되므로 지금 종료 시간이 반올림되고 변경된 내용이 범위.

또한 이러한 호출을 통해 거의 실시간 복제를 수행하는 경우 리턴 된 기내 트랜잭션 시간 소인에주의를 기울여야합니다. 그렇지 않으면 변경 시간 소인이 실제 트랜잭션 확약 시간이 될 수 없기 때문에 변경 사항을 누락 할 수 있습니다)

+0

실제 커밋 시간과 다른 변경 타임 스탬프로 문제가 될 것이라고 생각하는 것에 신경을 쓰시겠습니까? 나는 그 우려를 잘 모르겠다. – geoffc

+1

물론 이것은 문서에서 다루어 져야하지만 여기에 그 예가 나와 있습니다. 00:00:55에 시작된 업데이트가 있고 행의 업데이트 타임 스탬프가 00:00:55로 설정되었지만 트랜잭션이 00:01:02까지 완료되지 않는다고 가정 해보십시오. 00:00부터 00:01까지 00:01:01에 getUpdated를 호출하면 (tx가 커밋되지 않았으므로) 항공편 변경시 표시되지 않지만 맹목적으로 폴링 창을 롤 포워드하는 경우, 다음 폴링은 00:01에서 00:02에 대한 것이며, 업데이트가 현재 커밋되었지만 변경 타임 스탬프는 여전히 00:00:55이므로 2 개의 설문 결과에도 나타나지 않습니다. – superfell

+1

현재 시도하고 투표하는 시간에 가까울수록이 문제는 더욱 심각합니다. getUpdated 결과에는 가장 오래된 기내 트랜잭션이 시작된 시간 소인이 포함되어 있으므로이 시간 소인보다 폴링 시간 소인을 롤 포워드해서는 안됩니다. 그렇지 않으면 변경 사항 누락의 위험이 있습니다. – superfell