Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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 SetupSQSA 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

...

Bloco de código
languagecpp
titleExemplo 1
linenumberstrue
collapsetrue
#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