2013-10-14 2 views
1

Я пытаюсь self-host a Дистрибьютор в существующей службе Windows. Я использую MSMQ транспорт, Ниже показано, как создается автобус:Настройка NServiceBus Конечная точка Имя/ввод очереди при самообслуживании

NServiceBus.Configure.With() 
.DefaultBuilder() 
.EnlistWithDistributor() 
.JsonSerializer() 
.UseTransport<Msmq>() 
.UnicastBus() 
.CreateBus() 
.Start(); 

мне нужно переопределить имя по умолчанию очереди (автоматически происходит от имен Ассамблеи), я пытался определить EndPointConfig в следующим образом, к сожалению, это не изменило название Q.

[NServiceBus.EndpointName("custon.queue.name")] 
public class EndpointConfig : NServiceBus.IConfigureThisEndpoint, NServiceBus.AsA_Publisher 
{ 
    public EndpointConfig() 
    { 
    } 
} 

Config раздел


<configSections> 
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core"/> 
    <section name="AuditConfig" type="NServiceBus.Config.AuditConfig, NServiceBus.Core"/> 
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/> 
    <section name="TransportConfig" type="NServiceBus.Config.TransportConfig, NServiceBus.Core"/> 
    </configSections> 
    <AuditConfig QueueName="audit"/> 
    <MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/> 
    <TransportConfig MaximumConcurrencyLevel="10" MaxRetries="3" MaximumMessageThroughputPerSecond="10"/> 
    <UnicastBusConfig> 
    <MessageEndpointMappings> 
     <add Messages="Protocols" Endpoint="[email protected]"/> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 



Как я могу переопределить имя очереди используется при самостоятельном хостинге?
Любая помощь будет оценена по достоинству.

+0

дубликат http://stackoverflow.com/a/14406143/136720 –

ответ

4

При самообслуживании нет класса EndpointConfig - конфигурация полностью получена из вашего плавного блока конфигурации. Класс EndpointConfig игнорируется.

Через беглой конфигурацию, изменив имя конечной точки (в частности, о том, «изменить входную очередь» является неправильным - он отъехал имя конечной точки) осуществляются следующим образом:

Configure.With() 
    .DefineEndpointName("MyEndpointName") 
    // Rest of config 

или если вы хотите чтобы быть в состоянии вывести его из файла базы данных или конфигурации или сделать что-то фантазию ...

Configure.With() 
    .DefineEndpointName(() => 
     { 
      // determine and return endpoint name 
     }) 
    // Rest of config 

Конечного имя имеет решающее значение для всего остального в конфигурации, поэтому он должен быть очень первым элементом в беглой конфигурации цепь.

Также см. How to Specify Your Input Queue из документации NServiceBus.

Смежные вопросы