NServiceBus не публикуется в MSMQ
Я делаю пилотный тест для тестирования шаблона издателя / подписчика NServiceBus, используя следующий код.Сначала я хотел протестировать функцию публикации НЕЗАВИСИМО. Однако мои сообщения регистрируются в журнале ошибок каждый раз, когда я запускаю издателя самостоятельно.
Program.cs из Publisher.proj
static class Program
{
static void Main()
{
LogManager.Use<DefaultFactory>().Level(LogLevel.Info);
BusConfiguration busConfiguration = new BusConfiguration();
busConfiguration.EndpointName("Samples.PubSub.MyPublisher");
busConfiguration.UseSerialization<XmlSerializer>();
busConfiguration.UseTransport<MsmqTransport>();
busConfiguration.UsePersistence<InMemoryPersistence>();
busConfiguration.EnableInstallers();
using (IBus bus = Bus.Create(busConfiguration).Start())
{
bus.Subscribe<EventMessage>();
Start(bus);
}
}
static void Start(IBus bus)
{
Console.WriteLine("Press '1' to publish IEvent");
Console.WriteLine("Press '2' to publish EventMessage");
Console.WriteLine("Press '3' to publish AnotherEventMessage");
Console.WriteLine("Press 'Enter' to publish a message.To exit, Ctrl + C");
#region PublishLoop
while (true)
{
ConsoleKeyInfo key = Console.ReadKey();
Console.WriteLine();
Guid eventId = Guid.NewGuid();
switch (key.Key)
{
case ConsoleKey.D1:
bus.Publish<IMyEvent>(m =>
{
m.EventId = eventId;
//m.Time = DateTime.Now.Second > 30 ? (DateTime?) DateTime.Now : null;
m.Duration = TimeSpan.FromSeconds(99999D);
});
Console.WriteLine("Published IMyEvent with Id {0}.", eventId);
continue;
case ConsoleKey.D2:
EventMessage eventMessage = new EventMessage
{
EventId = eventId,
Time = DateTime.Now.Second > 30 ? (DateTime?) DateTime.Now : null,
Duration = TimeSpan.FromSeconds(99999D)
};
bus.Publish(eventMessage);
Console.WriteLine("Published EventMessage with Id {0}.", eventId);
continue;
case ConsoleKey.D3:
AnotherEventMessage anotherEventMessage = new AnotherEventMessage
{
EventId = eventId,
Time = DateTime.Now.Second > 30 ? (DateTime?) DateTime.Now : null,
Duration = TimeSpan.FromSeconds(99999D)
};
bus.Publish(anotherEventMessage);
Console.WriteLine("Published AnotherEventMessage with Id {0}.", eventId);
continue;
default:
return;
}
}
#endregion
}
}
App.config из Publisher.proj
"<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<configuration>
<configSections>
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="AuditConfig" type="NServiceBus.Config.AuditConfig, NServiceBus.Core" />
</configSections>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Shared" Endpoint="Samples.PubSub.MyPublisher"/>
</MessageEndpointMappings>
</UnicastBusConfig>
<AuditConfig QueueName="audit" />
</configuration> "
Ошибка:2015-11-22 21: 57: 01.264 WARN NServiceBus.Faults.Forwarder.FaultManager Сообщение с идентификатором '396bf681-f7b7-44f7-88b6-a5580169b865' не удалось выполнить FLR и будет передано SLR для повторной попытки 1.
1 ответ
Я не вижу вашего сообщения def в указанном вами коде.
Попробуйте поместить их в свою сборку и сослаться на нее, а затем обновите UniBusConfig до следующего вида:
<UnicastBusConfig>
<MessageEndpointMappings>
<add Assembly="Samples.PubSub.Shared"
Endpoint="Samples.PubSub.MyPublisher" />
</MessageEndpointMappings>
</UnicastBusConfig>
Повторите ваш код.
См. http://docs.particular.net/nservicebus/messaging/message-owner для получения дополнительной информации.