Cria um Serviço de compartilhamento de Dados em cache de memória permitindo que os dados sejam armazenados em estrutura de Lista 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.
A Lista pode ser criada para Windows e Linux usando o serviço do Redis como infra-estrutura (Serviço de Cache)
Hierarquia
TQueueListSvc
Construtores
Propriedades
Métodos
Exemplos
Exemplo 1Expandir origem
#include 'protheus.ch'
// Setup Redis
Static cRedisHost := "tec-clima"
Static nRedisPort := 6379
User Function LstPut()
Local nRet := 0
// ID da mensagem
Local cMsgId1 := "id1"
// 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 Lista
Local cListName := "Lista_TQLS"
// Objeto de Lista
Local oTQLS := Nil
Local cMsgGet := ""
// Cria um novo objeto de Lista
oTQLS := TListSvc():New(cListName)
If(oTQLS == Nil)
ConOut("### ERRO ### " + "Erro na criacao da Lista - " + cListName)
Return .F.
Else
ConOut("Criacao da Lista OK - " + oTQLS:cName)
EndIf
// Configurando a Lista
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 Lista OK - " + oTQLS:cName + " nMsgRetPer: " + AllTrim(Str(oTQLS:nMsgRetPer)))
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 Lista OK - " + oTQLS:cName + " com ID: " + cMsgId1 + " Tamanho: " + AllTrim(Str(Len(cMsg))))
EndIf
// Obtem uma mensagem
nRet := oTQLS:GetMsg( cMsgId1, @cMsgGet )
If nRet != 0
ConOut("### ERRO ### " + "Erro ao receber mensagem" + " Erro: " + AllTrim(Str(nRet)))
Return .F.
Else
ConOut("Recebeu msg Lista OK - " + oTQLS:cName + " com ID: " + cMsgId1 + " Tamanho: " + AllTrim(Str(Len(cMsgGet))))
EndIf
// Removendo uma mensagem
nRet := oTQLS:DelMsg( cMsgId1 )
If nRet != 0
ConOut("### ERRO ### " + "Erro ao remover mensagem" + " Erro: " + AllTrim(Str(nRet)))
Return .F.
Else
ConOut("Removeu msg Lista OK - " + oTQLS:cName + " com ID: " + cMsgId1)
EndIf
Return .T.
Observações
Para Windows a versão requer uma biblioteca para acesso ao Redis (rdwincli.dll).