NServiceBus-无法发送消息

NServiceBus-无法发送消息,nservicebus,Nservicebus,我遵循了,当我尝试从客户端应用程序(NServiceBusDemo.Client)发送消息时,出现以下异常: 2013-05-27 12:27:50514[7]错误NServiceBusDemo.Client.SendOrder [(null)]-启动终结点时出现问题。 Common.Logging.ConfigurationException:目标队列 'server@jasper“找不到。您可能错误地配置了 这类mes的目的地 (NServiceBusDemo.Messages.Comman

我遵循了,当我尝试从客户端应用程序(NServiceBusDemo.Client)发送消息时,出现以下异常:

2013-05-27 12:27:50514[7]错误NServiceBusDemo.Client.SendOrder [(null)]-启动终结点时出现问题。 Common.Logging.ConfigurationException:目标队列 'server@jasper“找不到。您可能错误地配置了 这类mes的目的地 (NServiceBusDemo.Messages.Commands.PlaceOrder)中的 MessageEndpointMappin在您的数据库中的UnicastBusConfig节的gs 配置文件。也可能是给定的队列 尚未创建或已删除- -->NServiceBus.Unicast.Queuing.QueueNotFoundException:无法将消息发送到地址:[server@jasper] ---> System.Messaging.MessageQueueException:Queue不存在或 您没有足够的权限执行该操作

我已经很久没有使用NServiceBus了,但我确实记得必须添加消息端点映射(教程中没有提到),我已经完成了:

  <UnicastBusConfig ForwardReceivedMessagesTo="audit">
    <MessageEndpointMappings>
      <add Messages="NServiceBusDemo.Messages" Endpoint="NServiceBusDemo.Server"/>
    </MessageEndpointMappings>
  </UnicastBusConfig>

在消息队列控制台中查看时,我创建了以下专用队列:

  • nservicebusdemo.client
  • nservicebusdemo.client.retries
  • nservicebusdemo.server
  • nservicebusdemo.server.retries
  • nservicebusdemo.server.timeout
  • nservicebusdemo.server.timeoutsdispatcher

问题在于文章中的代码明确指定了端点名称“Server”(我已更改)。正如@UdiDahan在twitter上指出的,这优先于MessageEndpointMappings,这也是本文中未提及这些映射的原因

我更新了客户端代码以不指定端点,因此使用app.config中的设置:

public class SendOrder : IWantToRunAtStartup
{
    public IBus Bus { get; set; }

    public void Run()
    {
        string product;
        while ((product = Console.ReadLine()) != "q")
        {
            Bus.Send(new PlaceOrder() { Product = product });
        }          
    }

    public void Stop()
    {

    }
}

问题是文章中的代码明确指定了端点名称“Server”(我已经更改了该名称)。正如@UdiDahan在twitter上指出的,这优先于MessageEndpointMappings,这也是本文中未提及这些映射的原因

我更新了客户端代码以不指定端点,因此使用app.config中的设置:

public class SendOrder : IWantToRunAtStartup
{
    public IBus Bus { get; set; }

    public void Run()
    {
        string product;
        while ((product = Console.ReadLine()) != "q")
        {
            Bus.Send(new PlaceOrder() { Product = product });
        }          
    }

    public void Stop()
    {

    }
}
我有一个类似的问题(即相同的错误),但我的问题的解决方案与你的不同。我想在这里分享,以确保其他人不会有同样的问题

对我来说,问题的发生是因为控制台应用程序没有启动。我必须将启动项目设置为解决方案,配置为同时启动web应用程序和控制台应用程序。这样做之后,一切都开始工作了

我希望这能帮助别人。

我也遇到过类似的问题(即相同的错误),但我的问题的解决方案与你的不同。我想在这里分享,以确保其他人不会有同样的问题

对我来说,问题的发生是因为控制台应用程序没有启动。我必须将启动项目设置为解决方案,配置为同时启动web应用程序和控制台应用程序。这样做之后,一切都开始工作了


我希望这对某人有所帮助。

我很好奇,“jasper”是你电脑的名字吗?我很好奇,“jasper”是你电脑的名字吗?你应该把正确答案标记为。。。嗯,作为回答。人们更容易看到正确答案。我觉得你的答案一开始就像是一个后续问题:)@DennisvanderStelt你必须等2天才能把你自己的答案标记为答案。你应该把正确的答案标记为。。。嗯,作为回答。人们更容易看到正确答案。起初我以为你的答案像是一个后续问题:)@DennisvanderStelt你得等两天才能把自己的答案标记为答案。