2013-04-02 6 views
1

현재 Tibco EMS 서버에 연결하기 위해 WCF 서비스를 설정하는 데 문제가 있습니다. 단일 인스턴스 모드에서 서비스를 실행할 때 (응용 프로그램이 실행되는 방식으로 인해 이것을 변경할 수 없음) 서비스가 처리 된 경우에도 처음에는 2 개의 메시지를 항상 인식합니다. 일부 메시지를 건너 뛸 수 있습니다. 나는 팁코 EMS WCF 코드를 통해 강화하고, 모두 ACK를 필요로 표시됩니다 민간 _deliveredList 필드에 기본 TIBCO.EMS.Session 클래스 2 메시지가 난 단지에도 불구하고 있다는 것을 알 수Tibco EMS WCF를 ConcurrencyMode.Single 모드로 사용하는 중복 ACK

[ServiceBehavior(
    ConcurrencyMode = ConcurrencyMode.Single, 
    InstanceContextMode = InstanceContextMode.Single, 
    Namespace = "http://tempuri.org/test")] 
public class MyService : IMyService 

하나의 메시지를 처리했습니다. 대기열에 얼마나 많은 메시지가 있는지는 중요하지 않습니다. 길이가 1보다 큰 경우 항상 확인 응답이 두 배가됩니다.

다음 구성으로 조절을 적용했지만 보내진 초기 메시지 수에 영향을 미치지 않는 것으로 보입니다.

도움이 될 것입니다.

+0

어떤 메시지 인식 모드를 사용하고 있습니까 (예 : CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE 등)? –

+0

CLIENT_ACKNOWLEDGE을 (를) 사용하고 있습니다. –

답변

1

CLIENT_ACKNOWLEDGE를 처리 할 때 Tibco가 WCF 구성 요소를 사용하는 것은 좋지 않은 것처럼 보입니다. 세션 객체가 추상화되어 있기 때문에 액세스 권한이없는 것들에 대해서는 실제로 ACK를 사용할 수 없습니다.

  • 는 프리 페치 1 큐에 설정
  • 사용 EXPLICIT_CLIENT_ACKNOWLEDGE 당신이하지 않고 예외를 던질 경우 잡았다도 있습니다

설정은 다음과 같습니다

옵션은 ACK는 대기열에 걸릴 것입니다.