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