2013-05-27 366 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應用程序和控制檯應用程序。做完這些之後,一切都開始奏效。

我希望能幫助別人。