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 é compativel 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: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: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( < cprefetchSize >, < cprefetchCount >, < bglobal > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cprefetchSize | numérico | Indica cprefetchSize (TODO) | X | |
cprefetchCount | numérico | Indica cprefetchCount (TODO) | X | |
bglobal | lógico | Indica bglobal (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:Error
Descreve o erro da ultima operação realizada
Sintaxe
Error()
Exemplos
oRecv:Error()
tAmqp:QueueName
Indica 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
Informa o código de erro da ultima operação realizada
Sintaxe
Status()
Exemplos
oRecv:Status()