Compartilhar via


Enviando a uma fila de mensagens particular remota com a tarefa Script

O serviço de enfileiramento de mensagens (também conhecido como MSMQ) facilita a comunicação rápida e confiável de desenvolvedores com programas aplicativos, enviando e recebendo mensagens. Uma fila de mensagens pode estar localizada no computador local ou em um computador remoto, e pode ser pública ou particular. No Integration Services, o gerenciador de conexões do MSMQ e a tarefa Fila de Mensagens não dão suporte ao envio para uma fila privada em um computador remoto. Porém, a tarefa Script facilita o envio de uma mensagem a uma fila particular remota.

Observação

Se desejar criar uma tarefa mais fácil de ser reutilizada em vários pacotes, procure utilizar o código desse exemplo de tarefa Script como o ponto inicial de uma tarefa personalizada. Para obter mais informações, consulte Desenvolvendo uma tarefa personalizada.

Descrição

O exemplo a seguir usa um gerenciador de conexões MSMQ existente, junto com objetos e métodos do namespace System.Messaging, para enviar o texto contido em uma variável de pacote a uma fila de mensagens particular remota. A chamada para o método M:Microsoft.SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object) do gerenciador de conexões MSMQ retorna um objeto MessageQueue cujo Send método realiza essa tarefa.

Para configurar esse exemplo de tarefa Script

  1. Crie um gerenciador de conexões do MSMQ com o nome padrão. Defina o caminho de uma fila particular remota válida no seguinte formato:

    FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>  
    
  2. Crie uma variável do Integration Services chamada MessageText do tipo String para passar o texto da mensagem para o script. Digite uma mensagem padrão como o valor da variável.

  3. Adicione uma tarefa Script à superfície de design e edite-a. Na guia Script do Editor da Tarefa Script, adicione a variável MessageText à propriedade ReadOnlyVariables para disponibilizar a variável dentro do script.

  4. Clique em Editar Script para abrir o editor de script VSTA (Microsoft Visual Studio Tools for Applications).

  5. Adicione uma referência do projeto de script ao namespace System.Messaging.

  6. Substitua o conteúdo da janela de script pelo código da seção a seguir.

Código

Imports System  
Imports Microsoft.SqlServer.Dts.Runtime  
Imports System.Messaging  
  
Public Class ScriptMain  
  
    Public Sub Main()  
  
        Dim remotePrivateQueue As MessageQueue  
        Dim messageText As String  
  
        remotePrivateQueue = _  
            DirectCast(Dts.Connections("Message Queue Connection Manager").AcquireConnection(Dts.Transaction), _  
            MessageQueue)  
        messageText = DirectCast(Dts.Variables("MessageText").Value, String)  
        remotePrivateQueue.Send(messageText)  
  
        Dts.TaskResult = ScriptResults.Success  
  
    End Sub  
  
End Class  
using System;  
using Microsoft.SqlServer.Dts.Runtime;  
using System.Messaging;  
  
public class ScriptMain  
{  
  
    public void Main()  
        {  
  
            MessageQueue remotePrivateQueue = new MessageQueue();  
            string messageText;  
  
            remotePrivateQueue = (MessageQueue)(Dts.Connections["Message Queue Connection Manager"].AcquireConnection(Dts.Transaction) as MessageQueue);  
            messageText = (string)(Dts.Variables["MessageText"].Value);  
            remotePrivateQueue.Send(messageText);  
  
            Dts.TaskResult = (int)ScriptResults.Success;  
  
        }  
  
}  

Ícone do Integration Services (pequeno) Mantenha-se atualizado com o Integration Services
Para obter os downloads, artigos, exemplos e vídeos mais recentes da Microsoft, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN:

Visite a página do Integration Services no MSDN

Para receber uma notificação automática dessas atualizações, assine os RSS feeds disponíveis na página.

Confira também

Tarefa Fila de Mensagens