2013-02-13 1 views
0

Java EWS API를 사용하여 내 응용 프로그램을 MS Exchange에 연결하고 사용자 전자 메일 요청을 읽습니다. 이러한 요청은 시스템 워크 플로를 통해 처리됩니다. 하루 동안의 이메일 수는 50 개로 제한되어 있으므로 전체적인 양은 적습니다. 그러나 EWS API를 사용하여 Exchange 서버에서 읽을 수있는 효율적이고 안정적인 메커니즘을 찾고 있습니다. 또한 전자 메일이 처리되면 하위 폴더로 이동하므로받은 편지함에는 처리되지 않은 요청 만 있습니다.Java EWS API - Exchange로부터 전자 메일 읽기 - 비교 가능한 옵션

현재 나는 Exchange 서버에 연결하고 사서함에서 다양한 작업을 수행하기 위해 다음과 같은 체계를 사용합니다.

  1. 폴링 - 표준 Exchange 서비스 인터페이스를 사용하여 Exchange에 연결합니다. 새로운 이메일을 모두 찾아 순서대로 처리하십시오. 클라이언트는 읽기와 처리 된 폴더로 이동 사이의 실패 및 동기화를보다 잘 제어 할 수 있습니다. 단점이라면 경험이 실시간이 아니며 활동이없는 경우에도 교류가 이루어집니다.

  2. 풀 알림 -이 방법은 이전과 거의 동일하므로 일정을 사용하여 알림을 끌어오고 타이머 이벤트가 발생할 때마다받은 편지함에서 이메일을 읽습니다. 찬성론과 단점은 접근법 1과 유사합니다.

    푸시 알림 - 클라이언트는 특정 이벤트에 자신을 등록하여 밀어 넣기 알림을 수신하고 알림을 받기위한 콜백 메커니즘 (클라이언트 웹 서비스)을 정의하기 위해 Exchange Server에 가입합니다. 위쪽에는 알림이 실시간에 가깝고 이벤트가있을 때만 연결됩니다. 아래쪽에서 구독 및 워터 마크를 클라이언트 측에서 관리해야 이벤트가 손실되지 않습니다. 구독을 설정하기 전에 이미받은 편지함에있는 메시지가 어떻게 발생하는지에 대해 여전히 신뢰할 수있는 방법인지는 확실하지 않습니다. 서버가 시작될 때 해당 이벤트가 재생됩니까? 분명하지 않아.

  3. 스트리밍 구독 - 클라이언트가 스트리밍 연결을 설정 한 다음 서버와 최대 30 분 동안 열어두면이 시간 동안 교환은 등록 된 모든 이벤트를 알립니다. 연결이 끊어지면 구독을 복원 할 수 있도록 복원 할 수있는 기능이 있습니다. 폴더 항목을 동기화하고 동기화 상태를 유지하기위한 추가 단계가 들리기 시작하기 전까지는 최상의 접근 방식 인 것 같습니다. 이벤트가 연결/연결 해제에서 누락되지 않도록 정기적 인 간격으로 필요합니다.

내 요구를 보면 (안정적 Exchange 서버에서 이메일을 읽을) 및 다양한 옵션의 분석은 나는 그것이 전체 프로세스를 더 잘 제어 할 수 있습니다로 그 접근 방법 (1) 간단하고 더 안정적인 느낌. 그러나 찬성과 반대의 측면에서 프레임 워크에 대한 나의 이해가 잘못 되었다면 API에 익숙한 다른 사람들과 동그라미를하고 싶었습니다.

이메일을 놓치지 않으려 고하는 목적으로이 기능을 개선하기 위해 그룹의 제안을받습니다.

답변

0

옵션 1의 코드 단순성에 대해 설명하겠다. 분당 한 번 연결하면로드가 매우 낮으며 (아무 것도 반환하지 않는 FindItem 호출) 사용자는 거의 즉각적으로이를 경험합니다.

당신은 '순간적'이되고 싶다는 소망이 약간 모순되는데 (사용자가 많은 업데이트를한다면 1 분 정도 기다릴 수 있습니다).

+0

저는 1 월에 동의합니다. 실시간으로 비즈니스 사용자는 이메일을 보낸 직후에 시작된 워크 플로를보고 대시 보드의 진행 상황을 추적 할 수 있어야했습니다. 그러나 나는 신뢰성을 얻으려는 작은 지연을 해결하는 것이 의미가 있다고 생각한다. –