2016-02-26 6 views
2

My Command Класс выглядит следующим образом:NES- Команда не посылает CommandHandler

public class RegisterToConference : ICommand 
    { 
     public RegisterToConference() 
     { 
      this.Id = Guid.NewGuid(); 
      this.Seats = new Collection<SeatQuantity>(); 
     } 

     public Guid Id { get; set; } 

     public Guid OrderId { get; set; } 

     public Guid ConferenceId { get; set; } 

     public ICollection<SeatQuantity> Seats { get; set; }   
    } 

My Command Handler класс выглядит следующим образом:

public class OrderCommandHandler : 
     IHandleMessages<RegisterToConference> 
    { 
     private readonly IRepository repository; 
     private readonly IPricingService pricingService; 

     public OrderCommandHandler(IRepository repository, IPricingService pricingService) 
     { 
      this.repository = repository; 
      this.pricingService = pricingService; 
     } 

     public void Handle(RegisterToConference command) 
     { 
      var items = command.Seats.Select(t => new OrderItem(t.SeatType, t.Quantity)).ToList(); 
      var order = repository.Get<Registration.Order>(command.OrderId); 
      if (order == null) 
      { 
       order = new Registration.Order(command.OrderId, command.ConferenceId, items, pricingService); 
      } 
      else 
      { 
       order.UpdateSeats(items, pricingService); 
      } 

      repository.Add<Registration.Order>(order); 
     } 

    } 

Я посылаю команду на автобусе от моего контроллера Способ действия следующим образом: конфигурация

this.commandBus.Send(command); 

конечная точка выглядит следующим образом:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantToRunWhenBusStartsAndStops, IWantToRunWhenConfigurationIsComplete 
    { 
     public void Init() 
     { 
      LogManager.Use<Log4NetFactory>(); 
     } 

     public void Start() 
     { 
      Wireup.Init() 
       .UsingInMemoryPersistence() 
       .EnlistInAmbientTransaction() 
       .NES() 
       .Build(); 
     } 

     public void Stop() 
     { 
     } 

     public void Customize(BusConfiguration configuration) 
     { 
      configuration.UseSerialization<Json>(); 
      configuration.EnableInstallers(); 
      configuration.UsePersistence<InMemoryPersistence>(); 
      configuration.UseTransport<MsmqTransport>(); 
      configuration.PurgeOnStartup(false); 
      configuration.RegisterComponents(c => 
      { 
       c.ConfigureComponent<Repository>(DependencyLifecycle.InstancePerUnitOfWork); 

       }); 
     } 

     public void Run(Configure config) 
     { 
      config.NES(); 
     } 
    } 

Внутри Web.config я настроен следующим образом:

<configSections> 
     <section name="TransportConfig" type="NServiceBus.Config.TransportConfig, NServiceBus.Core" /> 
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" /> 
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" /> 
    </configSections> 

<TransportConfig MaxRetries="5" MaximumConcurrencyLevel="1" MaximumMessageThroughputPerSecond="0" /> 
    <UnicastBusConfig> 
    <MessageEndpointMappings> 
     <add Messages="Registration" Endpoint="Registration" /> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 
    <MessageForwardingInCaseOfFaultConfig ErrorQueue="RegistrationEndPoint.Errors" /> 

Внутри Global.asax.cs Я зарегистрировал ISendOnlyBus следующим образом:

public static ISendOnlyBus Bus { get; private set; } 
     private void RegisterBus() 
     { 
      var busConfiguration = new BusConfiguration(); 
      busConfiguration.UseSerialization<JsonSerializer>(); 
      busConfiguration.UseTransport<MsmqTransport>(); 
      busConfiguration.Transactions().Disable(); 
      busConfiguration.PurgeOnStartup(false); 

      LogManager.Use<NServiceBus.Log4Net.Log4NetFactory>(); 

      Bus = NServiceBus.Bus.CreateSendOnly(busConfiguration); 
     } 

При нажатии на кнопку, чтобы отправить команда для обработки команд не работает.

Я использую рамки NES.CQRS.

+0

Вы начали автобус в своем Global.asax.cs? У вас что-нибудь в журналах? есть ли у вас сообщения в очереди? –

ответ

-3

Решил проблему. У меня была проблема, связанная с инъекцией зависимостей, и я проигнорировал ее, когда я пострадал. Теперь я исправил проблему ioc, и теперь она работает нормально.

+2

Для остальных преимуществ сообщества вы бы либо расширили свое действие, чтобы исправить его, либо удалить вопрос? –