2013-05-27 268 views
0

我跟着Getting Started With NServiceBus - Code First Article,当我试图从客户端应用程序(NServiceBusDemo.Client)我得到下面的异常发送消息:NServiceBus - 无法发送消息

2013年5月27日12时27分:50,514 [7] ERROR NServiceBusDemo.Client.SendOrder [(null)] <(nu ll)> - 启动端点时发生问题。 Common.Logging.ConfigurationException:找不到目标队列 'server @ jasper'。您的 配置文件中的UnicastBusConfig部分的 MessageEndpointMappin中可能错误地配置了 目的地的此类消息 (NServiceBusDemo.Messages.Commands.PlaceOrder)。也可以是仅仅 的给定队列还没有被创建或已经被删除的情况。 - - > NServiceBus.Unicast.Queuing.QueueNotFoundException:无法发送消息到地址:[server @ jasper] ---> System.Messaging.MessageQueueException:该查询不存在或 您没有足够的权限执行操作。

这是一个很长一段时间,因为我用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.timeouts
  • nservicebusdemo.server.timeoutsdispatcher
+0

我很好奇,是“碧玉”你电脑的名字? –

+0

@UdiDahan是的,它是 –

回答

3

的问题是,从文章的代码明确指定端点名称“服务器”(我改变了)。正如@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() 
    { 

    } 
} 
+0

你应该把正确的答案标记为......那么,作为答案。人们更容易看到正确的答案。我认为你的回答起初就像是一个后续问题:) –

+0

@DennisvanderStelt你必须等待2天才能将自己的答案标记为答案。 –

1

我有一个类似的问题(即同样的错误),但解决我的问题是与你的不同。我想在此分享以确保其他人不存在相同的问题。

对我来说,问题在于控制台应用程序未启动。我必须将启动项目设置为解决方案,该解决方案已配置为启动Web应用程序和控制台应用程序。做完这些之后,一切都开始奏效。

我希望能帮助别人。