Compartilhar via


Como usar o Moniker de Fila

O moniker de fila é usado para ativar um componente em fila programaticamente. O moniker de fila requer que ele receba o ID de classe (CLSID) do objeto a ser chamado do novo moniker diretamente à direita dele. Quando prefixado à esquerda, o novo apelido passa o CLSID para o apelido à esquerda dele.

Ferramenta administrativa de serviços de componentes

Não se aplica.

Visual Basic

O parâmetro de nome de exibição GetObject é "queue:/new:", seguido pelo ID do programa ou GUID de forma de cadeia de caracteres, com ou sem chaves, do objeto de servidor a ser instanciado. Os exemplos a seguir mostram três ativações válidas de um componente com o moniker de fila:

  1. Set objMyQC = GetObject ("queue:/new:QCShip.Ship")
    
  2. Set objMyQC = GetObject ("queue:/new:{812DF40E-BD88-11D0-8A6D-00C04FC340EE}")
    
  3. Set objMyQC = GetObject ("queue:/new:812DF40E-BD88-11D0-8A6D-00C04FC340EE")
    

C/C++

O parâmetro de nome de exibição CoGetObject é "queue:/new:", seguido pelo ID do programa ou GUID de forma de cadeia de caracteres, com ou sem chaves, do objeto de servidor a ser instanciado. Os exemplos a seguir mostram três ativações válidas de um componente com o moniker de fila:

  1. hr = CoGetObject (
      L"queue:/new:QCShip.Ship",
      NULL, IID_IShip, (void**)&pShip);
    
  2. hr = CoGetObject (
      L"queue:/new:{812DF40E-BD88-11D0-8A6D-00C04FC340EE}", 
      NULL, IID_IShip, (void**)&pShip);
    
  3. hr = CoGetObject (
      L"queue:/new:812DF40E-BD88-11D0-8A6D-00C04FC340EE",
      NULL, IID_IShip, (void**)&pShip);
    

Comentários

O moniker de fila aceita parâmetros opcionais que alteram as propriedades da mensagem enviada para o serviço de enfileiramento de mensagens. Por exemplo, para fazer com que a mensagem do serviço de enfileiramento de mensagens seja enviada com prioridade 6, o componente enfileirado seria ativado da seguinte maneira:

hr = CoGetObject (
  L"queue:Priority=6,ComputerName=MyComp/new:QCShip.Ship",
  NULL, IID_IShip, (void**)&pShip);

A tabela a seguir lista os parâmetros de moniker de fila que afetam a fila de destino.

Parâmetro Descrição
ComputerName
Especifica a parte do nome do computador de um nome de caminho da fila do serviço de enfileiramento de mensagens. O nome do caminho da fila do serviço de enfileiramento de mensagens é formatado como ComputerName em QueueName<.> Se não for especificado, o nome do computador associado ao aplicativo configurado será usado.
QueueName
Especifica o nome da fila do serviço de enfileiramento de mensagens. O nome do caminho da fila do serviço de enfileiramento de mensagens é formatado como ComputerName em QueueName<.> Se não for especificado, o nome da fila associado ao aplicativo configurado será usado.
Para obter uma fila não transacional, você pode especificar o nome da fila primeiro e, em seguida, criar um aplicativo COM+ com o mesmo nome.
PathName
Especifica o nome completo do caminho da fila do serviço de enfileiramento de mensagens. Se não for especificado, o nome do caminho da fila do serviço de enfileiramento de mensagens associado ao aplicativo configurado será usado. Para substituir o nome de destino, o caminho pode ser especificado no seguinte formulário para uma instalação de grupo de trabalho do serviço de enfileiramento de mensagens:
Fila:PathName ComputerName\PRIVATE$\AppName=/new:Myproject.CMyClass
Nota: As linguagens de programação C e Microsoft Visual C++ exigem duas barras invertidas para representar uma barra invertida dentro de literais de cadeia de caracteres, por exemplo, chicago\payroll.
Nome do formato
Quando você marca um aplicativo COM+ como enfileirado, COM+ cria uma fila de Enfileiramento de Mensagens cujo nome é o mesmo do aplicativo. O nome do formato do serviço de enfileiramento de mensagens dessa fila está no catálogo COM+, associado ao aplicativo COM+. Para substituir o nome de destino, o nome do formato pode ser especificado no seguinte formulário para uma instalação de grupo de trabalho do serviço de enfileiramento de mensagens:
Fila:FormatName=DIRECT=OS:ComputerName\PRIVATE$\AppName/new:ProgId
Em uma configuração do Active Directory, "PRIVATE$" não é especificado como parte do nome da fila.

Observação

Os parâmetros opcionais de moniker de fila são processados da esquerda para a direita. Especifique cada palavra-chave apenas uma vez. A especificação do parâmetro PathName substitui os parâmetros ComputerName e QueueName. Um parâmetro FormatName específico exclui o conhecimento prévio de um parâmetro ComputerName, QueueName e PathName.

Associando o ouvinte de componentes em fila a uma fila privada específica

O ouvinte de componentes em fila COM+ recebe somente de filas associadas ao aplicativo COM+ marcado como enfileirado. Quando você marca um aplicativo COM+ como enfileirado, COM+ cria uma fila de Enfileiramento de Mensagens cujo nome é o mesmo do aplicativo. O nome do formato do serviço de enfileiramento de mensagens dessa fila está no catálogo COM+, associado ao aplicativo COM+. Quando o aplicativo COM+ é iniciado e marcado como escuta, um ouvinte no processo de aplicativo COM+ é iniciado e a fila é aberta. A tabela a seguir lista os parâmetros de moniker de fila que afetam a mensagem do serviço de enfileiramento de mensagens.

Parâmetro Descrição
Específico do aplicativo
Especifica um inteiro não assinado, por exemplo, AppSpecific=12345.
AuthLevel
Especifica o nível de autenticação da mensagem. Uma mensagem autenticada é assinada digitalmente e requer um certificado para o usuário que envia a mensagem. Valores aceitáveis:
  • MQMSG_AUTH_LEVEL_NONE,0
  • MQMSG_AUTH_LEVEL_ALWAYS,1
Entrega
Especifica a opção de entrega de mensagem. Esse valor é ignorado para filas transacionais. Valores aceitáveis:
  • MQMSG_DELIVERY_EXPRESS,0
  • MQMSG_DELIVERY_RECOVERABLE,1
EncryptAlgorithm
Especifica o algoritmo de criptografia a ser usado pelo serviço de enfileiramento de mensagens para criptografar e descriptografar a mensagem. Valores aceitáveis:
  • CALG_RC2, CALG_RC4
  • Qualquer valor inteiro que seja aceitável para o serviço de enfileiramento de mensagens para um EncryptAlgorithm.
Algoritmo de Hash
Especifica uma função de hash criptográfico. Valores aceitáveis:
  • CALG_MD2, CALG_MD4, CALG_MD5, CALG_SHA, CALG_SHA1, CALG_MAC, CALG_SSL3_SHAMD5, CALG_HMAC CALG_TLS1PRF
  • Qualquer valor inteiro que seja aceitável para o serviço de enfileiramento de mensagens para um HashAlgorithm.
Diário
Especifica a opção de diário de mensagens do serviço de enfileiramento de mensagens. Valores aceitáveis:
  • MQMSG_JOURNAL_NONE,0
  • MQMSG_DEADLETTER,1
  • MQMSG_JOURNAL,2
Rótulo
Especifica uma cadeia de caracteres de rótulo de mensagem de até MQ_MAX_MSG_LABEL_LEN caracteres.
MaxTimeToReachQueue
Especifica um tempo máximo, em segundos, para que a mensagem chegue à fila.
Valores aceitáveis:
  • INFINITE
  • LONG_LIVED
  • Número de segundos
MaxTimeToReceive
Especifica um tempo máximo, em segundos, para que a mensagem seja recebida pelo aplicativo de destino. Valores aceitáveis:
  • INFINITE
  • LONG_LIVED
  • Número de segundos
Prioridade
Especifica um nível de prioridade de mensagem, dentro dos valores permitidos do serviço de enfileiramento de mensagens.
Valores aceitáveis:
  • MQ_MIN_PRIORITY,0
  • MQ_MAX_PRIORITY,7
  • MQ_DEFAULT_PRIORITY,3
  • Número entre 0 e 7
PrivLevel
Especifica um nível de privacidade, usado para criptografar mensagens.
Valores aceitáveis:
  • MQMSG_PRIV_LEVEL_NONE, NENHUM, 0
  • MQMSG_PRIV_LEVEL_BODY, CORPO,
  • MQMSG_PRIV_LEVEL_BODY_BASE, BODY_BASE, 1
  • MQMSG_PRIV_LEVEL_BODY_ENHANCED, BODY_ENHANCED, 3
Trace
Especifica as opções de rastreamento, usadas no rastreamento do serviço de enfileiramento de mensagens.
Valores aceitáveis:
  • MQMSG_TRACE_NONE,0
  • MQMSG_SEND_ROUTE_TO_REPORT_QUEUE,1

O conjunto completo de funções do SDK administrativo COM+ está disponível usando objetos COM. Isso permite que qualquer programa inicie e pare aplicativos COM+, conforme necessário.

Observação

Quando um aplicativo COM+ é iniciado, é o aplicativo que está sendo executado, não os componentes individuais dentro do aplicativo. Se um aplicativo chamar um componente não enfileirado, o aplicativo COM+ que contém o componente será iniciado. Se a caixa de seleção ouvinte estiver habilitada, o ouvinte também iniciará e iniciará o processamento de mensagens para componentes enfileirados. Embora o serviço de componentes em fila possa ser iniciado dessa maneira, se você empacotar componentes em fila e não enfileirados em um único aplicativo COM+, certifique-se de que realmente deseja que os componentes em fila sejam iniciados se um componente não enfileirado for executado. Se esse não for o caso, empacote os componentes enfileirados em um aplicativo COM+ separado dos outros componentes.

Ativando filas de componentes