我创建了一个WCF服务,该服务监听专用MSMQ的作业。我扼杀了我的服务,以便它一次只能处理一个作业(maxConcurrentInstances = 1)。我遇到的问题是,当提交两条消息并通过我的计算机管理控制台检查队列时,它是空的。我希望有一个悬而未决的消息。当我提交三条消息时,我会在MSMQ中看到一条待处理消息。从阅读MSDN看来,ServiceHost看起来像是将下一份作业保存在内存中,直到当前作业完成,但我无法找到一种方法将它关闭,以便它不会将消息保留在内存中。有谁知道一种方法可以使ServiceHost不会在内存中保留待处理消息并将其保留在队列中?谢谢!WCF服务监听器到MSMQ - 挂起的消息
<configuration>
<system.serviceModel>
<services>
<service
name="MyService"
behaviorConfiguration="DefaultServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/MyService/"/>
</baseAddresses>
</host>
<endpoint
address="net.msmq://localhost/private/MyService"
binding="netMsmqBinding" bindingConfiguration="MsmqBindingNoSecurity"
contract="IMyService" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultServiceBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceThrottling
maxConcurrentCalls="1"
maxConcurrentSessions="1"
maxConcurrentInstances="1"
/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<netMsmqBinding>
<binding name="MsmqBindingNoSecurity"
useActiveDirectory="false"
exactlyOnce="false">
<security mode="None">
<transport
msmqAuthenticationMode="None"/>
</security>
</binding>
</netMsmqBinding>
</bindings>
</system.serviceModel>
</configuration>
这是我在计算器上的第一篇文章,所以我在这一个新手。让我知道是否需要提供更多细节,或者我可以做些什么来帮助社区回答我的问题。 – MrE