【发布时间】:2012-07-23 14:42:56
【问题描述】:
我有一个本地私人队列。我在 MVC 应用程序中还有一个 WCF 服务,它使用 msmqIntegrationBinding 侦听队列。问题是,当消息排队时,服务合同永远不会被调用,但消息在之后的那一刻就消失了。邮件不在有害队列中。这是我声明绑定到队列的配置部分:
<services>
<service name="SkruvInfo.Web.Service.QueueMessageReceiver">
<endpoint address="msmq.formatname:DIRECT=OS:LEIA\private$\screwinfo_autotests_messagequeue"
binding="msmqIntegrationBinding"
bindingConfiguration="MsmqBinding"
contract="SkruvInfo.Web.Service.IQueueMessageReceiver" />
</service>
</services>
这是合同:
[ServiceContract(Namespace = "http://localhost/SkruvWeb/Service")]
public interface IQueueMessageReceiver
{
[OperationContract(IsOneWay = true, Action = "*")]
void PutScrewInfoMessage(MsmqMessage<string> msg);
}
这是服务中的方法:
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void PutScrewInfoMessage(System.ServiceModel.MsmqIntegration.MsmqMessage<string> msg)
{
log4net.Config.XmlConfigurator.Configure();
var log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
try
{
log.Debug("Message from queue: " + msg.Body.ToString(CultureInfo.InvariantCulture));
var xDoc = new XmlDocument();
xDoc.LoadXml(msg.Body);
CacheScrewInfoModelFromScrewInfoXmlDoc(xDoc);
}
catch (Exception e)
{
log.Error("Error parsing message from queue",e);
EventLog.WriteEntry("Application","Message error for screws");
}
}
关于为什么消息消失但不调用服务的任何建议?
【问题讨论】:
-
作为一个有趣的问题,你为什么使用 MsmqIntegrationBinding?您的队列客户端是否在旧平台上?
标签: c# asp.net-mvc wcf msmq msmqintegrationbinding