interactionSpec.setAltClientID(calloutQueueName);
interactionSpec.setInteractionVerb(com.ibm.connector2.ims.ico.
IMSInteractionSpec.SYNC_RECEIVE_CALLOUT);
interactionSpec.setExecutionTimeout(3600000);
Especifique um
valor de tempo limite para aguardar uma mensagem de solicitação de callout na fila de
suspensão. Neste exemplo, é especificado um valor de tempo limite de execução alto.
Um valor de tempo limite de execução alto ajuda a minimizar o loop necessário em
um componente EJB de callout quando pode haver longos períodos de tempo
em que não ocorre solicitações de callout. A duração do tempo limite depende do período de tempo máximo que você espera que decorra entre seus pedidos de callout e o que deseja que seu componente
EJB faça se esse período for excedido. O código de amostra a seguir mostra uma exemplo de um aplicativo Java que é configurado para receber as solicitações de callout.
// A consulta JNDI retorna connFactory
InitialContext initCntx = new InitialContext();
ConnectionFactory connFactory =
(ConnectionFactory) initCntx.lookup("java:comp/env/ibm/ims/IMSTarget");
IMSConnectionSpec connSpec = new IMSConnectionSpec();
Connection connection = connFactory.getConnection(connSpec);
Interaction interaction = connection.createInteraction();
IMSInteractionSpec interactionSpec = new IMSInteractionSpec();
//Configurar o modo de confirmação e o nível de sincronização
interactionSpec.setCommitMode(0);
interactionSpec.setSyncLevel(1);
// Um nome de fila com oito caracteres na qual as mensagens assíncronas deverão ser recuperadas a partir da
cadeia calloutQueueName = new String ("CALLOUTQ");
// Configurar o nome da fila assíncrona para a mensagem de callout
interactionSpec.setAltClientID(calloutQueueName);
// Configurar interactionVerb para recuperar a saída assíncrona com um tempo limite
interactionSpec.setInteractionVerb(com.ibm.connector2.ims.ico.
IMSInteractionSpec.SYNC_RECEIVE_CALLOUT);
interactionSpec.setExecutionTimeout(3600000);
for (;;) {
try {
// Executar a interação
iteraction.execute(interactionSpec, null, calloutMsg);
// Processamento adicional em calloutMsg
:
} catch (Exception e) {
// se a exceção for um erro de tempo limite de execução,
// você poderá não efetuar nenhuma ação e continuar com o loop
// ou processar o erro e interromper o loop
break;
}
}
iteraction.close();
connection.close();