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 для получения дополнительной информации.

Другие вопросы по тегам