2010-03-11 3 views
1

블로그 게시물에 꽤 비슷한 방식으로 설정 한 항목이 있지만 대기열 중 하나에 대해 시작할 때 오류가 발생합니다.왜 Rhino.ServiceBus가 자동으로 모든 대기열을 생성하지 않습니까?

msmq://localhost/colin_console_queue은 내 프로그램에서 자동으로 생성되지 않습니다.

저는 제대로 된 일을하지 않고 있지만 생략 한 부분을 알지 못한다고 확신합니다.

'DisableAutoQueueCreation'속성을 발견했는데 다양한 구성 요소에서 false로 설정하려고 시도했지만 RhinoServiceBusFacility의 속성으로 사용할 수 있음을 발견했기 때문에 설정도 시도했습니다. 불행히도 그 중 아무 것도 작동하지 않는 것 같았습니다.

두 큐를 동일한 큐로 가리 키도록 변경하면 기본적으로 응용 프로그램이 작동하지만, 내가하는 일이 아니라는 것이 확실합니다. Starbucks 예제 응용 프로그램을 보면서 코드에서 하드 코드 된 경로를 사용하여 많은 설정을 수행하는 것처럼 보입니다.

<facilities> 
    <facility id="rhino.esb"> 
    <bus threadCount="1" numberOfRetries="5" endpoint="msmq://localhost/colin_console_queue_bus" 
     logEndpoint="msmq://localhost/colin_console_queue_bus.log" /> 
    <messages> 
     <add name="ConsoleApplication1" endpoint="msmq://localhost/colin_console_queue" /> 
    </messages> 
    </facility> 
</facilities> 

여기 내 테스트 프로그램을 사용하여 큐를 사용하는 방법을 알아 냈습니다. 여기

static void Main(string[] args) 
    { 
     var container = new WindsorContainer(new XmlInterpreter()); 
     container.Kernel.AddFacility("rhino.esb", new RhinoServiceBusFacility()); 
     if (args.Length > 0) 
     { 
      var bus = container.Resolve<IStartableServiceBus>(); 
      bus.Start(); 
      bus.Send(new EmailMessage { Message = args[0], To = "test" }); 
      bus.Dispose(); 
     } 
     else 
     { 
      container.Register(AllTypes.FromAssembly(Assembly.GetExecutingAssembly()).BasedOn(typeof(IMessageConsumer))); 
      var bus = container.Resolve<IStartableServiceBus>(); 
      bus.Start(); 
      Console.ReadLine(); 
      Console.WriteLine("Bus stopped"); 
      bus.Dispose(); 
     } 
    } 

는 큐잉 서버의 구성을 메시지 큐와 인프라 ccentral 같은 무언가에 대한 관리 조치를하지 말아야 일반적인 웹 응용 프로그램에서 내가 오류,

Unhandled Exception: System.Transactions.TransactionException: Failed to send message to Uri: msmq://colin-pc/colin_console_queue ---> Rhino.ServiceBus.Exceptions.TransportException: The queue msmq://colin-pc/colin_console_queue does not exists 
    at Rhino.ServiceBus.Msmq.OpenedQueue..ctor(QueueInfo info, MessageQueue queue, String url, Nullable`1 transactional) in D:\Work\rhino-esb\Rhino.ServiceBus\Msmq\OpenedQueue.cs:line 24 
    at Rhino.ServiceBus.Msmq.QueueInfo.Open(QueueAccessMode access, IMessageFormatter formatter) in D:\Work\rhino-esb\Rhino.ServiceBus\Msmq\QueueInfo.cs:line 71 
    at Rhino.ServiceBus.Msmq.QueueInfo.Open(QueueAccessMode access) in D:\Work\rhino-esb\Rhino.ServiceBus\Msmq\QueueInfo.cs:line 63 
    at Rhino.ServiceBus.Msmq.MsmqTransport.SendMessageToQueue(Message message, Endpoint endpoint) in D:\Work\rhino-esb\Rhino.ServiceBus\Msmq\MsmqTransport.cs:line 303 

답변

3

Ayende (전자 메일을 통해) 덕분에 응답은 대기열 (버스 태그에 언급 된 것)이 자동으로 작성해야하는 유일한 원인이기 때문입니다.

예제 프로그램에 결함이있어 완벽하게 다시 작성하고 제대로 이해할 수 있도록 편도 큐를 사용했습니다. 나는 분명히 약간의 어려움을 겪었 기 때문에 그 어떤 예를 든다.

0

음이다. 정말. 일반 행정 안내자 - 프로그래머가 someoen이 아마도 그렇게하려고 시도하지 않는다고 생각하는 이유입니다.

생각보다 큐를 설정하는 것이 더 많을 수도 있습니다.) 구성과 비슷합니다.

수동으로 대기열을 설정하십시오.

+0

죄송합니다. 웹 사이트에서 대기열을 구성하지 않으려 고합니다. 그게 내가하고있는 일에 대한 불필요한 '배경'정보 였어. 그래서 나는 질문에서 그것을 제거했다. –