Componente cliente STOMP ActiveMQ: sgcMQ | eSeGeCe

Cliente STOMP ActiveMQ

O TsgcWSPClient_STOMP_ActiveMQ é o cliente STOMP ajustado para o Apache ActiveMQ. Ele adiciona utilitários de fila e tópico sobre a nomenclatura de destinos do ActiveMQ, objetos de cabeçalho tipados em cada evento e uma propriedade ActiveMQ_Options para as configurações específicas do broker de que as assinaturas duráveis precisam.

TsgcWSPClient_STOMP_ActiveMQ

Tudo o que existe no cliente STOMP genérico continua valendo. As adições são os utilitários de destino, os eventos com nomes do ActiveMQ e as opções do broker.

Classe do componente

TsgcWSPClient_STOMP_ActiveMQ

Especificação

STOMP 1.0, 1.1 e 1.2

Transporte

TCP (61613) ou TLS (61612)

Linguagens

Delphi, C++ Builder

Transporte: TCP puro e TLS. O sgcMQ conversa com o ActiveMQ sobre TCP puro e TLS. O conector STOMP sobre WebSocket do ActiveMQ é um endpoint WebSocket, então alcançá-lo exige um pacote sgcWebSockets, que fornece o cliente WebSocket.

Assine uma fila e publique nela

Este exemplo usa a porta STOMP nativa do ActiveMQ, a 61613. Para um link criptografado, ative o TLS no transporte e use o conector stomp+ssl do broker na porta 61612.

uses
  sgcTCP_Client_WS, sgcWebSocket_Classes, sgcWebSocket_Protocols,
  sgcWebSocket_Protocol_STOMP_Broker_Client,
  sgcWebSocket_Protocol_STOMP_ActiveMQ_Client;

var
  TCPClient: TsgcTCPClient;
  STOMP: TsgcWSPClient_STOMP_ActiveMQ;
begin
  TCPClient := TsgcTCPClient.Create(nil);
  TCPClient.Host := 'broker.example.com';
  TCPClient.Port := 61613;

  STOMP := TsgcWSPClient_STOMP_ActiveMQ.Create(nil);
  STOMP.Client := TCPClient;
  STOMP.ActiveMQ_Options.ClientId := 'delphi-consumer-1';
  STOMP.Authentication.Enabled  := True;
  STOMP.Authentication.UserName := 'admin';
  STOMP.Authentication.Password := 'admin';

  STOMP.OnActiveMQConnected := ActiveMQConnected;
  STOMP.OnActiveMQMessage   := ActiveMQMessage;

  TCPClient.Active := True;
end;

procedure TForm1.ActiveMQConnected(Connection: TsgcWSConnection;
  Headers: TsgcWSActiveMQSTOMPHeadersConnected);
begin
  STOMP.SubscribeQueue('orders');
  STOMP.PublishQueue('orders', '{"id":42}');
end;

procedure TForm1.ActiveMQMessage(Connection: TsgcWSConnection;
  MessageText: string; Headers: TsgcWSActiveMQSTOMPHeadersMessage;
  Subscription: TsgcWSBrokerSTOMPSubscriptionItem);
begin
  Memo1.Lines.Add(Headers.Destination + ': ' + MessageText);
end;
// include: sgcTCP_Client_WS.hpp, sgcWebSocket_Protocols.hpp,
// sgcWebSocket_Protocol_STOMP_ActiveMQ_Client.hpp

TsgcTCPClient *TCPClient = new TsgcTCPClient(this);
TCPClient->Host = "broker.example.com";
TCPClient->Port = 61613;

TsgcWSPClient_STOMP_ActiveMQ *STOMP =
  new TsgcWSPClient_STOMP_ActiveMQ(this);
STOMP->Client = TCPClient;
STOMP->ActiveMQ_Options->ClientId = "cbuilder-consumer-1";
STOMP->Authentication->Enabled  = true;
STOMP->Authentication->UserName = "admin";
STOMP->Authentication->Password = "admin";

STOMP->OnActiveMQConnected = ActiveMQConnected;
STOMP->OnActiveMQMessage   = ActiveMQMessage;

TCPClient->Active = true;

// In the OnActiveMQConnected handler:
STOMP->SubscribeQueue("orders");
STOMP->PublishQueue("orders", "{\"id\":42}");

Principais propriedades & métodos

Os membros que você usa com mais frequência.

Filas

SubscribeQueue, PublishQueue e UnSubscribeQueue recebem o nome simples da fila e montam o destino /queue/, com argumentos de durabilidade, exclusividade e modo de confirmação.

Tópicos

SubscribeTopic, PublishTopic e UnSubscribeTopic fazem o mesmo para destinos /topic/, que é onde as assinaturas duráveis mais importam.

Destinos genéricos

SubscribeEx, PublishEx e UnSubscribeEx recebem uma string de destino bruta para tudo o que os utilitários nomeados não cobrem.

Opções do broker

ActiveMQ_Options carrega as configurações específicas do ActiveMQ, incluindo o ClientId que o broker usa para reconhecer um assinante durável que retorna.

Assinaturas duráveis

Os utilitários de assinatura recebem um flag Durable, então um assinante de tópico pode se desconectar e depois recolher as mensagens que o broker guardou para ele.

Cabeçalhos tipados

OnActiveMQMessage entrega um TsgcWSActiveMQSTOMPHeadersMessage mais o item de assinatura correspondente, então destino, id da mensagem e modo de confirmação são propriedades.

Confirmação

Passe um modo de confirmação ao assinar e depois chame ACK ou NACK com o id da mensagem. Em ackAuto o broker considera uma mensagem entregue assim que ela é enviada.

Opções de mensagem

Cada utilitário de publicação aceita um tipo de conteúdo, um nome de transação opcional e um objeto de opções de mensagem para cabeçalhos do ActiveMQ como prioridade, persistência e expiração.

Conexão

Client, Authentication, HeartBeat, Versions e Options se comportam exatamente como no cliente STOMP genérico.

Continue explorando

Ajuda onlineReferência completa da API e guia de uso.
Cliente STOMP genéricoO componente base com o conjunto de frames padrão.
Cliente AMQP 1.0O ActiveMQ Artemis também fala AMQP 1.0.
Baixar avaliação gratuitaExecute contra um broker ActiveMQ local.
PreçosLicenças Single, Team e Site com código-fonte completo.
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Pronto para começar?

Baixe a versão de avaliação gratuita e converse com o ActiveMQ via STOMP a partir do Delphi ou do C++ Builder.