契约接口
public interface IDataIdentResultInterface { [OperationContract(Name = "MSMQRebackData",IsOneWay =true)] void RebackData(string sampleID, int state, int IdentFlag, string family, string genus, string species, string type, DataSet dsResult, string server); }
实现函数就是通过sampleID去数据库更新了几个字段的值,并向另一张表添加了几条数据(DataSet中的数据)
服务配置
<service name="xhpr.MicroID.Service.CloudService.DataIdentResultService"> <endpoint address="net.msmq://localhost/private/microid" binding="netMsmqBinding" bindingConfiguration="msmq" name="DataIdentResultService" contract="Xhpr.MicroID.Interface.DataIdentResultService" /> </service>
<netMsmqBinding> <binding name="msmq" queueTransferProtocol="SRMP" > <security mode="None"> </security> </binding> </netMsmqBinding>
客户端通过线程池调用RebackData向服务器发送消息
客户端配置
<client> <endpoint address="net.msmq://***.***.***.***/private/microid" binding="netMsmqBinding" bindingConfiguration="DataIdentResultService" contract="DataIdentResultService.DataIdentResultService" name="DataIdentResultService" /> </client>
<netMsmqBinding> <binding name="DataIdentResultService"> <security mode="None" /> </binding> </netMsmqBinding>
现在的问题是感觉很多数据被堵塞,可是网络畅通,服务器空闲,客户端很多消息像是没发出去一样,在客户端查看消息队列
为什么有这么多未处理的,基本可以肯定不是程序执行异常造成的,因为之前用wsHttpBinding做过,只是改了个消息传递的方式,之前用wsHttpBinding遇到并发太高会超时,所以想试试消息队列