2016-02-26 1 views
2

Mon commandement classe est la suivante:Nes- commande n'envoie pas 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; }   
    } 

classe Mon gestionnaire de commandes est la suivante:

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); 
     } 

    } 

j'envoyer la commande au bus de mon contrôleur de procédé d'action comme suit:

this.commandBus.Send(command); 

la configuration du point de fin est la suivante:

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(); 
     } 
    } 

A l'intérieur du web.config I configuré comme suit:

<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 intérieur Je me suis inscrit ISendOnlyBus comme suit:

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); 
     } 

Lorsque je clique sur le bouton pour envoyer le commande au gestionnaire de commande, cela ne fonctionne pas. J'utilise le framework NES.CQRS.

+0

Avez-vous démarré le bus dans votre fichier Global.asax.cs? Avez-vous quelque chose dans les journaux? Avez-vous des messages dans les files d'attente? –

Répondre

-3

Résolu le problème. J'ai eu quelques problèmes à l'injection de dépendance et je l'ai ignoré quand j'ai été souffert. Maintenant, j'ai corrigé le problème de ioc et ça fonctionne maintenant bien.

+2

Pour le reste de la communauté, pourriez-vous développer ce que vous avez fait pour le réparer OU supprimer la question? –