Мое приложение asp.net mvc 4 не отправляет / не публикует rabbitmq

У меня есть приложение, приложение asp.net MVC 4. Я хочу использовать rabbitmq с easynetq. В моем локальном компьютере это работает отлично. Но в производственной среде, которая является Windows Server 2012, он не отправляет никаких сообщений.

Я не мог понять, почему это не работает. В сообщении журнала ничего необычного. IIS и rabbitmq находятся в одной машине.

    protected void Application_Start()
    {
    ...
          using (var bus = RabbitHutch.CreateBus("host=localhost"))
          {
            bus.Publish(new SystemLog() { Code = "startapplication", Message = "nomessage" });
          }        
    ...
    }

    void Session_End(object sender, EventArgs e)
    {
      ...
            using (var bus = RabbitHutch.CreateBus("host=localhost"))
            {
                bus.Publish(new SystemLog() { Code = "sessionends", Message = "somenumber"});
            };
      ...
     }        

заранее спасибо

1 ответ

Решение

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

Вместо этого сохраните экземпляр где-нибудь (как статическая переменная) и поместите его в событие application_end, а не session_end.

Итак, больше похоже на это:

protected void Application_Start()
{
  _bus = RabbitHutch.CreateBus("host=localhost"))
  _bus.Publish(new SystemLog() { Code = "startapplication", Message = "nomessage" });
}

void Session_End(object sender, EventArgs e)
{
  _bus.Publish(new SystemLog() { Code = "sessionends", Message = "somenumber"});
}

protected void Application_End()
{
  if(_bus!=null)
    _bus.Dispose();
}
Другие вопросы по тегам