MSMQ 웹 서비스를 사용하여 큐에서 데이터를 읽고이를 데이터베이스에 저장합니다. 현재 Visual Studio 2010을 사용하여 서비스를 실행 중입니다 (문제입니까?). 코드 스 니펫은 아래에 있습니다.MSMQ 서비스가 큐를 읽지 않습니다.
계약
[ServiceContract]
public interface IService1
{
[OperationContract(IsOneWay = true,Action="*")]
void DOWork(MsmqMessage<Param> p);
}
구현
public class Service1:IService1
{
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void DoWork(Param p)
{
new Service1BL().DoWork(p);
}
}
구성
<service name="NameSpace.Service1" behaviorConfiguration="MSMQServiceBehavior">
<endpoint address="net.msmq://localhost/private/Service1" binding="netMsmqBinding" bindingConfiguration="PoisonBinding" contract="IService1"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
<behavior name="MSMQServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceMetadata httpGetEnabled="True"/>
</behavior>
<netMsmqBinding>
<binding name="PoisonBinding" receiveRetryCount="1" maxRetryCycles="5" retryCycleDelay="00:00:05" receiveErrorHandling="Fault">
<security mode="None"/>
</binding>
</netMsmqBinding>
추가 정보
다른 대기열 이름으로 시도했습니다. 처럼. \ 개인 $ \ 서비스 1과 . \ 개인 $ \ Service1.svc
- 메시지 큐, 메시지 큐 트리거, Net.Msmq의 청취자 어댑터와 서비스는 내가 명시 적으로 메시지를 삽입하고
- 을 실행하는 WAS 큐
-
MessageQueue queue = new MessageQueue(@".\private$\service1");
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
queue.Send(p, MessageQueueTransactionType.Single);
queue.Close();
scope.Complete();
}
생하는 이유 MSMQ 웹 서비스를 다른 웹 서비스에서 호출하려고합니다. MSMQ 서비스를 호출 할 때 메시지를 대기열에 삽입하는 대신 MSMQ 서비스를 호출했습니다.