설정 한 WebSphere MQ 계약이 있습니다. 포이즌 처리를 위해 별도의 대기열에 5 번 재 시도 된 메시지를 전달하도록 대기열을 구성했습니다. WebSphere MQ v 7.01에서 제공하는 WCF 채널을 사용하여 서비스와 상호 작용합니다.WCF/MQSeries : 포이즌 메시지를 보관하는 방법
내 서비스가 연결되어 있지만 모든 것이 완벽하게 작동합니다. 서비스가 끊기 자마자 포이즌 메시지가 기본 대기열에 다시 나타납니다. 서비스를 다시 시작하면 즉시 메시지가 기본 대기열에서 포이즌 대기열로 되돌아갑니다. 서비스가 대기열에서 연결 해제 된 후 메시지가 독극물 대기열에 머물러있게하려면 어떻게해야합니까?
코드는 현재 POC 모드이므로 Window에서 서비스를 호스팅하고 있습니다. 이 클래스는 이러한 속성이 있습니다
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
[AssuredDelivery()]
public partial class MainWindow : Window, IWmqEndpoint
서비스 계약은 다음과 같습니다
[ServiceContract()]
public interface IWmqEndpoint
{
[OperationContract(IsOneWay = true)]
void SendMessage(string message);
[OperationContract(IsOneWay = true)]
void SendComplex(PersonName name);
}
주요 큐가 지속적이고, 그렇지 않으면 기본 설정. 독약 대기열에 대한 내용입니다.
대기열 설정 :
- 백 아웃 요청 큐 : wcf.inbound.poison 백 아웃 임계 값 : 5
- 강화 얻을 백 아웃 : 강화하지
- NPM 클래스 : 일반
은 좋은 메시지를 대기열에 넣고 시도한 다음 명시 적으로 커밋을 시도했습니다. 그것은 작동하지 않았다. 현재로서는 .NET에서 사용할 독이 메시지 처리 패턴을 평가하는 나쁜 행동을 강요합니다. –
DIS QSTATUS (사용자 백엔드 qname) ALL '메시지가 백 아웃 큐에있는 동안 진행중인 작업 단위가 있는지 확인하십시오. 그렇다면'UNCOM (YES)'가 표시됩니다.이들은 커밋되지 않은 메시지 여야하며 연결 핸들 당 하나의 UOW 만있을 수 있습니다. Hmmm ... 이제는 그것에 대해 생각해보십시오. 또한 DIS QSTATUS (백 아웃 qname) TYPE (HANDLE) ALL'을 실행하고 큐에 하나 이상의 스레드가 연결되어 있는지 확인하십시오. –