我正在使用以下代码进行试点以测试 NServiceBus 的发布者/订阅者模式。 我想先独立测试发布功能。 但是,每次我独立运行发布者时,我的消息都会记录到错误日志中。
Publisher.proj 的 Program.cs
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
}
}
Publisher.proj 的 App.config
"<?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”ID 的消息 FLR 失败,将移交给 SLR 进行重试尝试 1。