NServiceBus в WebApp - PullRequest
       23

NServiceBus в WebApp

0 голосов
/ 01 февраля 2012

Я пытался настроить NServiceBus в WebApp с функцией DataBus, но безрезультатно. Это то, что я имею в плане конфигурации шины,

_containerProvider.Register(Component.For<IProducer>()
    .UsingFactoryMethod(() => new NServiceBusProducer(() => Configure
        .WithWeb()
        .DefaultBuilder()
        //.AsMasterNode()
        .Log4Net()
        .MsmqTransport()
            .IsTransactional(false) // ??
            .PurgeOnStartup(false)
        .UnicastBus()
        .DefiningMessagesAs(t => t.Namespace != null && t.Namespace == "Magma.CommunicationBus.Messages")
        .JsonSerializer()
        .FileShareDataBus(@"..\..\..\abc")
        //.CreateBus()
        //.Start()))
        .SendOnly()))
    .LifestyleSingleton());

Я не знаю, если это проблема с разрешениями, когда NServiceBus создает папку хранилища, но я даже не вижу, что DataBus инициализируется. На стороне «прослушивания» я могу видеть это с этой строкой в ​​выводе:

  • Запущена шина обмена файлами. Расположение: ...

Но я не вижу этого в выходных данных WebApp. Кроме того, когда NServiceBus инициализируется, я вижу (снова в выходных данных) список мутаторов, которые использует шина. И снова нет никаких следов «DataBusMessageMutator»

К вашему сведению, я использую это для отправки вложений электронной почты. Вот как я это делаю:

message.Attachements = new DataBusProperty<byte[]>(email.Attachments.Select(a =>
{
    using (MemoryStream ms = new MemoryStream())
    {
        a.ContentStream.CopyTo(ms);
        return ms.ToArray();
    }
}).First());

Я пытаюсь использовать только 1, но я планирую отправить список вложений.

Я не могу заставить это работать на стороне отправки. Конечно, он падает на стороне «прослушивания» где-то в коде NServiceBus, когда мутатор пытается получить несуществующий заголовок, чтобы создать путь к файлу «вещи», которую он будет читать. Сбой в методе «Get» класса «FileShareDataBus», так как параметр «key» в вызове «Path.Combine» имеет значение null.

Что я делаю неправильно или отсутствует?

1 Ответ

1 голос
/ 02 февраля 2012

Ну, я думаю, что нашел ответ.Похоже, вам нужно реализовать интерфейс I (Message | Command | Event) для правильной работы шины данных.Кроме того, вы можете отправить список элементов, используя что-то вроде:

new DataBusProperty<IEnumerable<byte[]>>

Я использую это для отправки нескольких вложений в сообщение электронной почты.почему это не работает с ненавязчивым режимом.Я надеюсь, что сотрудники NServiceBus увидят этот вопрос и объяснят его.

...