Share via


Interfaces de monitoramento do CRM COM+

A infraestrutura do CRM fornece um conjunto de interfaces que podem ser usadas para monitorar os CRMs em um aplicativo de servidor específico. Para acessar as interfaces de monitoramento, um componente em execução no aplicativo de servidor deve primeiro criar um atendente de CRM especializado chamado atendente de recuperação de CRM.

No uso normal de CRMs, espera-se que as transações sejam de curta duração e, portanto, os trabalhadores de CRM e os compensadores de CRM existem por um breve período de tempo, normalmente apenas alguns segundos no máximo. As interfaces de monitoramento são, portanto, projetadas para fornecer um instantâneo do estado dos CRMs em execução em um ponto específico no tempo. Se algum dos CRMs estiver tendo problemas, as interfaces de monitoramento podem ser usadas para zerar o CRM problemático, inspecionar seus registros de log e abortar sua transação, se necessário.

A seguir estão as três interfaces de monitoramento de CRM e descrições de como elas funcionam.

Interface Descrição
ICrmMonitor
Usando ICrmMonitor::GetClerks, um instantâneo pode ser obtido do conjunto atual de atendentes ativos do CRM no aplicativo do servidor. A partir disso, um determinado objeto de coleta de atendente do CRM pode ser localizado e consultado, incluindo o estado atual de sua transação e os registros de log gravados pelo CRM.
Quando a ferramenta de monitoramento determina qual funcionário é de interesse, ela chama ICrmMonitor::HoldClerk para obter uma interface ICrmMonitorLogRecords nesse atendente específico. Neste ponto, a ferramenta de monitoramento está segurando uma referência a esse atendente e, se a transação for concluída, o atendente é mantido na memória e não é liberado até que a ferramenta de monitoramento seja concluída.
ICrmMonitorClerks
Usando essa interface, o objeto de coleta do escriturário pode ser procurado para obter informações sobre o estado da coleta do escriturário no momento em que foi obtida. Essas informações incluem o número de atendentes, o ProgID do Compensador de CRM usado pelo atendente, a descrição fornecida no momento em que o Compensador de CRM foi registrado (usando ICrmLogControl::RegisterCompensator), o ID da unidade de trabalho da transação e o ID da atividade. Os escrivães individuais também são identificados exclusivamente por uma "instância de escriturário CLSID", que não é um CLSID COM no sentido usual do termo, mas simplesmente um GUID exclusivo que identifica esse funcionário específico por toda a sua vida.
ICrmMonitorLogRecords
Essa interface pode ser usada para consultar o estado atual da transação, para descobrir quantos registros de log esse atendente do CRM gravou e para obter os dados reais do registro de log. Os registros de log são fornecidos a partir da interface ICrmMonitorLogRecords no mesmo formato em que foram originalmente gravados (usando ICrmLogControl). Além disso, ICrmMonitorLogRecords pode ser opcionalmente implementado para converter os registros de log para o formato visível para que possam ser apresentados usando uma ferramenta de monitoramento genérica.
Como ICrmMonitorLogRecords é implementado diretamente no atendente do CRM, você pode QueryInterface para ICrmLogControl (também implementado no atendente do CRM). Isso pode ser usado para abortar diretamente a transação, se necessário (ICrmLogControl::ForceTransactionToAbort).

Conceitos do COM+ Compensating Resource Manager