Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 7 Próxima »

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.

A Fila pode ser criada pode ser criada para Windows e Linux usando o serviço do Redis como infra-estrutura (Serviço de Cache), ou ser criada em Linux usando a SQS ambientes da Amazon (AWS) (https://aws.amazon.com/pt/sqs/).


  

Hierarquia

  • TQueueListSvc

Construtores

Propriedades

Métodos

Exemplos

Exemplo 1
#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.

Observações

Para Windows a versão requer uma biblioteca para acesso ao Redis (rdwincli.dll), e para Linux acessando o SQS da AWS em versões superior "7.00.131227A-20180417 NG" requer a biblioteca (libaws-totvs-interface.so).

Arquivos: rdwincli_32bits.zip  |  rdwincli_64bits.zip  |  libaws-totvs-interface_32bits.zip  |  libaws-totvs-interface_64bits.zip

Abrangência

Totvs Application Server com release superior a 7.00.131227A-20160120 NG


Veja também

  • Sem rótulos