2016-06-15 4 views
0

CometD의 일반적인 사용자의 사용 사례/아키텍처를 이해하고 올바른 방향으로 가고 있는지 확인하려고합니다. 다음은 의도 된 용도를 설명하는 다이어그램입니다.CometD : 외부 서버에서 게시

CometD with web services

우리는 CometD 서버가 웹 서비스에 대한 이벤트 펍/하위 더있을 싶은

, NO 컨텐츠는 CometD 만 이벤트 데이터를 통과하지 않습니다. 웹 서비스는 처리하는 작업을 기반으로 클라이언트에 이벤트를 게시 할 수 있으며, 장기 실행 프로세스/예약 된 프로세스에서 발생할 수 있습니다.

  • 이 CometD Java 클라이언트의 적절한 사용이다 :

    내 질문은 자바 클라이언트를 기반으로? Java 클라이언트와 같은 문서는 데스크톱 응용 프로그램과 같은 단기간의 수명 응용 프로그램에 사용됩니다.

  • CometD 용 Java 클라이언트가 있다면 웹 서비스 인스턴스에서 CometD로 이벤트를 보내는 것을 처리 할 단일 인스턴스 또는 클라이언트 풀이 있어야합니까?
  • 클라이언트 코드는 일괄 처리 메시지와이를 호출하는 다중 스레드를 처리 할만큼 정교 해 보이며 하나의 메시지를 게시 할 필요가있을 때 클라이언트를 설정하는 것이 비용이 많이 드는 것처럼 보입니다. 맞습니까?

감사합니다.

답변

1

예, 이것은 CometD Java 클라이언트의 적절한 사용법입니다.

CometD Java 클라이언트의 단일 인스턴스를 가질 수도 있고 다중 스레드 사용에 안전하거나 각 웹 서비스에 대해 하나의 CometD Java 클라이언트를 가질 수 있습니다. 이는 아마도 CometD 웹 서비스가 보낸 서버).

CometD Java 클라이언트는 비동기입니다.

보낸 메시지가 CometD 서버에 의해 처리되었다는 회신이나 확인이 필요한 경우, HttpServletRequest.startAsync() 등을 통해 웹 서비스 요청을 일시 중단하고 CometD Java 클라이언트를 호출 할 수 있어야하며 클라이언트에 대한 웹 서비스 응답을 완료하라는 메시지 확인을받습니다.

CometD Java 클라이언트 API에서 콜백을 사용하여 확인을받을 수 있습니다 (CometD Java client API documentation 참조).

완벽을 기하기 위해 브로드 캐스트 채널을 사용하여 웹 서비스에서 메시지를 게시하면 메시지가 CometD 서버에 의해 원격 클라이언트에 즉시 다시 브로드 캐스트됩니다.

반면 서비스 채널을 사용하여 웹 서비스에서 메시지를 게시하는 경우 CometD 서버에서 메시지를 처리하고 (일부 비즈니스 논리에 따라 메시지를 풍부하게 만들거나 삭제할 수 있음) 전에 메시지를 처리 ​​할 수 ​​있습니다 다시 브로드 캐스트하거나 특정 클라이언트에게 보낼 기회가 있습니다.

+0

대단히 감사합니다. 도움을 청합니다! – Chap