消息队列服务消息未到达
本文关键字:消息 服务 队列 | 更新日期: 2023-09-27 17:55:11
我有这个WCF服务通过消息队列。
该服务的配置如下:
<service name="EmailServices.EmailService" behaviorConfiguration="serviceBehaviour">
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" name="mexEmailService" contract="IMetadataExchange" />
<endpoint name="netMsmqEmailService" address="net.msmq://w2k8services/emailservices_w2k8services" contract="EmailServices.IEmailService"
binding="netMsmqBinding" bindingConfiguration="netMsmq" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8008/EmailService" />
</baseAddresses>
</host>
</service>
像这样的绑定
<netMsmqBinding>
<binding name="netMsmq" exactlyOnce="true" receiveErrorHandling="Move" receiveTimeout="00:45:00" maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
非常基本的消息队列服务,在本地工作正常
生成代理并调用函数后,消息不会到达服务。停止服务时,它们不会进入任何队列,尽管有时您会看到一个很快出现在客户端计算机的传出队列中
跟踪文件显示一切正常,只是它无法查看 是否是事务性的。是的。。。
我不知道该尝试什么了,我会说它应该有效,但它就是没有。我还能尝试什么?
。有时您会看到一个很快出现在 客户端计算机
这意味着客户端正在成功排队消息,并且消息正在从一台计算机传输到另一台计算机(假设这是一个事务队列 - 它需要与您在绑定中指定的"exactlyOnce"一样)。
因此,假设事务排队,问题必须出在接收端。
首先要检查的是队列权限。若要接收消息,运行该服务的服务帐户需要以下队列权限:
- 收到
- 偷看
- 获取权限
- 获取属性
如果这些都已授予,那么接下来就是启用 msmq 事件日志记录。您应该能够看到消息到达计算机上的事件。之后的任何问题,您应该能够使用此日志看到。
检查您尝试发送的消息的长度。
默认情况下,WCF 仅发送 8192 个字符。
如果要发送超过 8192 个字符,则需要进行更改。
我遇到了类似的问题,这对我有用。