NServiceBus - вернуть сообщение на шину

У меня есть конечная точка шины, которая обрабатывает сообщение, однако теперь я хочу вернуть другое сообщение на шину внутри этого обработчика.

Для этого мне нужно получить ссылку на шину.

Однако, если я попробую следующее:

public class ServerEndpoint: IWantToRunAtStartup
{
    public static IBus Bus { get; set; }

    public void Run()
    {
        int x = 5;

        Bus = NServiceBus.Configure.With()
            .DisableTimeoutManager()
            .Log4Net()
            .DefaultBuilder()
            .XmlSerializer()
            .MsmqTransport()
                .IsTransactional(false)
                .PurgeOnStartup(false)
            .UnicastBus()
                .ImpersonateSender(false)
            .CreateBus()
            .Start();

    }

    public void Stop()
    {
    }
}

Затем я получаю всевозможные ошибки конфигурации, даже если я добавляю конфигурации Unicast и Msmq в файл app.config.

Может ли кто-нибудь дать мне указатели, я надеюсь, что это довольно простая ошибка!

Спасибо

Дункан

РЕДАКТИРОВАТЬ: Это на сервере. Меня смущает то, что шина настраивается в веб-приложении с помощью приведенного выше кода в методе global.asax App_Start(). Но при попытке сделать это в ServerEndpoint (фактическая dll «шина», запускаемая внутри хоста) это не работает.


person Duncan    schedule 06.02.2013    source источник
comment
вы настраиваете его на стороне клиента или на стороне сервера, используете ли вы какую-либо инъекцию зависимостей в своем проекте? если да, попробуйте поместить код туда, где вы вводите IBus. Метод DefaultBuilder() в конфигурации указывает шине Nservice использовать DI по умолчанию, которым является AutoFac.   -  person Rahul R.    schedule 06.02.2013
comment
Похоже, вы используете серверную часть с помощью NServiceBus.Host.exe. Если это так, вам не нужен этот код. См. пример FullDuplex для примера настройки сервера.   -  person Udi Dahan    schedule 06.02.2013


Ответы (2)


Для этого вы используете внедрение зависимостей, см. http://support.nservicebus.com/customer/portal/articles/862398-how-do-i-get-a-reference-to-ibus-in-my-message-handler-

person John Simons    schedule 06.02.2013
comment
Спасибо, я думал, что это произойдет «автоматически», как в моем веб-приложении [мне не нужно было ничего делать для этого, чтобы создать его для меня] - person Duncan; 06.02.2013

Спасибо за все отзывы - я пытался бегать, прежде чем научился ходить.

Судя по всему, для отправки сообщения на другую конечную точку мне нужно настроить другую сборку (ServiceBus.Host).

Шина создается автоматически с использованием DI, так что проблема не в этом.

Я посмотрел отличные видеоролики Pluralsight Андреаса Олунда (http://pluralsight.com/training/Courses/TableOfContents/nservicebus) и следовал приведенным здесь примерам (см. BusStop — Billing Take 2).

person Duncan    schedule 08.02.2013