2016-09-12 4 views
0

Мне нужно динамически создавать MSMQ внутри компонента конвейера. Я пишу свой Выполнение метода IBaseMessage следующим образом.как создать MSMQ в компоненте конвейера с помощью Biztalk

public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg) 
{ 
    IBaseMessagePart bodyPart = pInMsg.BodyPart; 
    if (!MessageQueue.Exists(@".\private$\NewQueue.Queue")) 
    { 
     var messageQueue = MessageQueue.Create(@".\private$\NewQueue.Queue"); 
     messageQueue.SetPermissions("Everyone", MessageQueueAccessRights.FullControl); 
    } 
    MessageQueue RequestQueue = new MessageQueue(@".\private$\NewQueue"); 
    Message SendMsg = new Message(); 
    SendMsg.Body = bodyPart; 
    RequestQueue.Send(SendMsg, "Siddharth"); 
    return pInMsg; 
} 

Сообщение собирается из порта приема в порт отправки, но он не создает какой-либо очереди, как я думаю, что мой метод Execute не выполняет или я не пишу правильный код. Пожалуйста помоги. Заранее спасибо :)

+0

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

ответ

0

, вероятно, ваш выполнить метод на самом деле вызывается, но потом одна из двух вещей hapenning:

  1. Учетная запись службы запуска экземпляра хоста не имеет необходимых разрешений для создания очереди , или
  2. Очередь создается, но тогда остальная часть вашего кода ничего не делает, потому что очередь неправильно адресована (отсутствует суффикс «.queue»).

Вы можете прикрепить свой отладчик к локальному процессу btsntsvc.exe и посмотреть, будет ли он вызван.

Смежные вопросы