gpt4 book ai didi

c# - MSMQ 服务不读取队列

转载 作者:行者123 更新时间:2023-12-02 22:26:50 33 4
gpt4 key购买 nike

我正在使用 MSMQ Web 服务从队列中读取数据并将其存储在数据库中。目前我正在使用 Visual Studio 2010 运行该服务(这是问题所在吗?)。代码片段如下。

契约(Contract)

[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>

附加信息

  • 我尝试过使用不同的队列名称。像 .\Private$\Service1 和.\Private$\Service1.svc

    • 消息队列、消息队列触发器、Net.Msmq Listner 适配器和 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 服务。

最佳答案

检查队列名称格式的拼写。

代替

MessageQueue queue = new MessageQueue(@".\private$\service1");

你应该试试这个:

MessageQueue queue = new MessageQueue(@"FormatName:DIRECT=OS:YOURMACHINENAME\private$\service1");

...当然,YOURMACHINENAME 需要替换为持有队列的机器的名称。 :-)

请注意第一部分区分大小写

关于c# - MSMQ 服务不读取队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12857051/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com