import.css=/download/attachments/6062824/tecnologia.css |
Cria um Serviço de compartilhamento de Dados em cache de memória permitindo que os dados sejam armazenados em estrutura de Fila de mensagens.
Este serviço pode ser usado para compartilhar dados entre servidores, permitindo troca de informações entre eles e e com isto permitindo também a continuação de tarefas iniciadas em um servidor e finalizadas em outro.
Cria uma infra estrutura que permite uma "granularização" das tarefas que podem ser executadas por quaisquer servidores.
Obs. Se o servidor for gerado para ambientes da Amanzon (* AWS VERSION) podem ser usado o SetupSQS.
#include 'protheus.ch' // Setup Redis Static cRedisHost := "tec-clima" Static nRedisPort := 6379 User Function FilPut() Local nRet := 0 // ID da mensagem Local cMsgId1 := "" // Mensagem a enviar Local cMsg := '{"inteiro":100,"double":10.32,"OK":true,"NOK":false,"NULO":null,"VAZIO":"","ROWS":[{"Valor":5000,"OBJ":{"x":2},"Data":"2014-08-29"}, "ricardo"], "VETOR":[1,2,3,4]}' // Nome da Fila Local cQueueName := "Fila_TQLS" // Objeto de Fila Local oTQLS := Nil Local nNO_MSGS := 0 Local cMsgGet := "" // Cria um novo objeto de Fila oTQLS := TQueueSvc():New(cQueueName) If(oTQLS == Nil) ConOut("### ERRO ### " + "Erro na criacao da Fila - " + cQueueName) Return .F. Else ConOut("Criacao da Fila OK - " + oTQLS:cName) EndIf // Configurando a Fila nRet := oTQLS:Setup(cRedisHost, nRedisPort) If nRet != 0 ConOut("### ERRO ### " + "Erro ao fazer o Setup" + " Erro: " + AllTrim(Str(nRet))) Return .F. Else ConOut("Setup de Fila OK - " + oTQLS:cName + " nMsgRetPer: " + AllTrim(Str(oTQLS:nMsgRetPer)) + " nVisTimeOut: " + AllTrim(Str(oTQLS:nVisTimeOut))) EndIf // Gravando uma mensagem nRet := oTQLS:PutMsg( @cMsgId1, cMsg ) If nRet != 0 ConOut("### ERRO ### " + "Erro ao enviar mensagem" + " Erro: " + AllTrim(Str(nRet))) Return .F. Else ConOut("Enviou msg Fila OK - " + oTQLS:cName + " com ID: " + cMsgId1 + " Tamanho: " + AllTrim(Str(Len(cMsg)))) EndIf // Obtendo valor de indicacao de que nao tem mais mensagens nNO_MSGS := oTQLS:eNO_MSGS // Obtem a mensagem nRet := oTQLS:WaitMsg( @cMsgId1, @cMsgGet, , 3 ) If nRet != 0 If(nRet == nNO_MSGS) ConOut("OK, nao existem mensagens na Fila.") Else ConOut("### ERRO ### " + "Erro ao receber mensagem" + " Erro: " + AllTrim(Str(nRet))) Return .F. EndIf Else ConOut("Recebeu msg Fila OK - " + oTQLS:cName + " com ID: " + cMsgId1 + " Tamanho: " + AllTrim(Str(Len(cMsgGet)))) EndIf // Removendo a mensagem nRet := oTQLS:DelMsg( cMsgId1 ) If nRet != 0 ConOut("### ERRO ### " + "Erro ao remover mensagem" + " Erro: " + AllTrim(Str(nRet))) Return .F. Else ConOut("Removeu msg Fila OK - " + oTQLS:cName + " com ID: " + cMsgId1) EndIf Return .T. |
Totvs Application Server com release superior a 7.00.131227A-20160120 NG