Á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 5 Próxima »

A classe tAMQP representa um objeto de comunicação do tipo AMQP (Advanced Message Queuing Protocol) da versão 0.9.1, que se comunica com servidores RabbitMQ. A instancia de uma classe permite a comunicação, envio e recebimento de mensagens através de um servidor AMQP, sendo possível o desenvolvimento de diversos tipos de aplicações, realizando transações ou comunicações padronizadas, de forma assíncrona, indiferente da arquitetura de cada uma delas.

Essa classe foi desenvolvida com base na existente biblioteca RabbitMQ.Client desenvolvida para C# .Net, sendo inclusive possível ser usado como referencia a documentação presente em https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html, assim como montar o ambiente de um servidor AMQP em https://www.rabbitmq.com/#getstarted.

Observações

  • Atualmente é compatível apenas com o protocolo 0.9.1

Exemplos

#define AMQP_AUTODELETE .T.
#define AMQP_EXCLUSIVE .T.
#define AMQP_DURABLE .T.
#define AMQP_PERSISTENT .T.
#define AMQP_AUTOACK .T.
#define fixed_channel_id 1

User Function _sender

Local oSender := tAmqp():New("localhost",5672,"guest","guest",fixed_channel_id)

oSender:QueueDeclare("test_queue", .F.,.F.,AMQP_AUTODELETE )
oSender:BasicPublish("","test_queue", AMQP_PERSISTENT, "hello world!")
u___Receiver()
Freeobj(oSender)
Return



User Function _Receiver


Local oRecv := tAmqp():New("localhost",5672,"guest","guest",fixed_channel_id)
local var

oRecv:QueueDeclare("test_queue", .F.,.F.,AMQP_AUTODELETE)
oRecv:BasicConsume("test_queue", AMQP_AUTOACK, )

var := oRecv:Body
 
Freeobj(oRecv)

Return

Abrangência

17.3.0.x

Hierarquia

  • tAMQP

Construtores

Construtor tAmqp:New

Cria um objeto tAMQP com um determinado AMQP Server.

Sintaxe

 tAmqp():New( < uParam1 >, [ uParam2 ], [ uParam3 ], [ uParam4 ], [ uParam5 ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

uParam1

caractere

Endereço do AMQP Server

X


uParam2

numérico

Porta do AMQP Server



uParam3

caractere

Usuário para logar na fila do AMQP Server



uParam4

caractere

Senha para logar na fila do AMQP Server



uParam5

caractere

Canal da comunicação com o AMQP Server



Retorno

Nome

Tipo

Descrição

oObj

objeto

Nova instância da classe tAmqp

Exemplos

  Local oClient := tAmqp():New("localhost",5672,"guest","guest",1)


Propriedades

tAmqp:ChannelNumber

Indica qual canal esta sendo usado para a fila atual

Tipo

Valor Padrão

Somente Leitura

numérico

N/A

N


tAmqp:Body

Conteudo da mensagem recebida após uma solicitação ao server AMQP via BasicConsume()

Tipo

Valor Padrão

Somente Leitura

caractere

""

N


tAmqp:ConsumeTimeout

Indica qual o timeout atual que esta sendo usado para a comunicação com o AMQP

Tipo

Valor Padrão

Somente Leitura

numérico

5

N


Métodos

tAmqp:QueueDeclare

Cria uma nova fila no AMQP Server.

Sintaxe

QueueDeclare( [ cFila ], [ bisDurable ], [ bisExclusive ], [ bisAutodelete ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cFila

caractere

Indica o nome da fila onde será criada .



bisDurable

lógico

Propriedade da fila bisDurable (TODO DOC).



bisExclusive

lógico

Propriedade da fila bisExclusive (TODO DOC).



bisAutodelete

lógico

Propriedade da fila bisAutodelete (TODO DOC).



Exemplos

  oSender:QueueDeclare(cFila,bisDurable,bisExclusive,bisAutodelete )

tAmqp:ExchangeDeclare

Cria uma nova exchange no AMQP Server.

Sintaxe

QueueDeclare( [ cexchange ], [ ctype ], [ bisExclusive ], [ bisAutodelete ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cexchange

caractere

Indica o nome da exchange

X


ctype

carectere

Indica o tipo da fila (fanout, direct, topic)

X


bpassive

lógico

Indica bpassive(TODO DOC).



bburablelógicoIndica bburable (TODO DOC).

bauto_deletelógicoIndica binternal(TODO DOC).

binternal

lógico

Indica binternal(TODO DOC).



Exemplos

  oSender:QueueDeclare(cFila,bisDurable,bisExclusive,bisAutodelete )

tAmqp:BasicConsume

Resgata uma mensagem no AMQP Server.

Sintaxe

BasicConsume( < cFila >, < bAck >, < bWaitingEvent > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cFila

caractere

Indica o nome da fila onde será resgatada .

X


bAck

lógico

Indica se o consumo irá ser autoack.

X


bWaitingEvent

lógico

Ignora o timeout e se fica aguardando por uma nova mensagem na fila.

X


Exemplos

  oRecv:BasicConsume("test_queue", bAck, bWaitingEvent)

tAmqp:QueueBind

Liga uma fila a uma exchange para que as mensagens fluam (sujeitas a vários critérios) da exchange (origem) para a fila (destino).

Sintaxe

QueueBind( < cExchange >, < cQueue >, < croutingkey > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cExchange

caractere

Indica o nome da exchange.

X


cQueue

caractere

Indica o nome da fila

X


croutingkey

caractere

Indica o routingkey (TODO).



Exemplos

  oRecv:BasicConsume("test_queue", bAck, bWaitingEvent)

tAmqp:BasicPublish

Envia uma mensagem para o AMQP Server.

Sintaxe

BasicPublish( < cExchange >, < cFila >, [ nPERSISTENT ], [ cMsg ], [ correlationID ], [ ReplyTo ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cExchange

caractere

Indica o nome da exchage onde será enviada a mensagem .

X


cFila

caractere

Indica o nome da fila onde será enviada a mensagem .

X


nPERSISTENT

lógico

Indica a requisição será persistente.



cMsg

caractere

Informa a mensagem a ser postada



correlationID

caractere

Id de correlação



ReplyTo

caractere

Fila para resposta dessa mensagem



Exemplos

  oRecv:BasicPublish("test_exchange", "test_queue", AMQP_PERSISTENT, "Hello World!" )


tAmqp:BasicQos

Seta para a conexão atual parametros QoS(quality of service)

Sintaxe

BasicQos( < nprefetchSize >, < nprefetchCount >, < bglobal > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

nprefetchSize

numérico

Indica cprefetchSize (TODO)

X


nprefetchCount

numérico

Indica cprefetchCount (TODO)

X


bglobal

lógico

Indica bglobal (TODO)

X


Exemplos

  oRecv:BasicQos(cprefetchSize, cprefetchCount, bglobal)

tAmqp:BasicAck

Indica para a fila que voce recebeu e processou a mensagem com sucesso (acknowledge)

Sintaxe

BasicAck( < ctag>, < cmultiple>)

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

ctag

caractere

Indica ctag (TODO)

X


cmultiple

caractere

Indica cmultiple (TODO)

X


Exemplos

  oRecv:BasicQos(cprefetchSize, cprefetchCount, bglobal)

tAmqp:CorrelationID

Indica qual a informação de correlação da mensagem recebida

Sintaxe

CorrelationID()

Exemplos

  oRecv:CorrelationID()

tAmqp:MessageCount

Indica quantas mensagens tem na fila prontas para serem recebidas

Sintaxe

oRecv:MessageCount()

Exemplos

  oRecv:MessageCount()

tAmqp:ConsumerCount

Indica quantas consumers existem em uma determinada fila.

Sintaxe

oRecv:ConsumerCount()

Exemplos

  oRecv:ConsumerCount()

tAmqp:Error

Descreve o erro da ultima operação realizada

Sintaxe

Error()

Exemplos

  oRecv:Error()


tAmqp:QueueName

Retorna qual o nome da fila atual que esta sendo usado

Sintaxe

QueueName()


tAmqp:ReplyTo

Informa qual a deve ser a fila solicitada para a resposta da mensagem recebida

Sintaxe

ReplyTo()

Exemplos

  oRecv:ReplyTo()


tAmqp:Status

Retorna o código de erro da ultima operação realizada

Sintaxe

Status()

Exemplos

  oRecv:Status()

tAmqp:Tag

Informa qual tag foi associada a uma fila, se houver

Sintaxe

Tag()

Exemplos

  oRecv:Tag()
  • Sem rótulos