SpringBoot (xv) ------ mensagens middleware RabbitMQ, SpringBoot integrar RabbitMQ

RabbitMQ site oficial: https://www.rabbitmq.com

  • esboço

Na maioria das aplicações, o sistema de comunicação assíncrona para melhorar o serviço através do middleware mensagem, estendeu dissociação capacidade.

  • Serviços de mensagens em dois conceitos-chave:
  1. corretor de mensagens (message broker) e um destino (onde você quiser) Quando o remetente da mensagem para enviar a mensagem, tomado pelo corretor mensagem, o corretor mensagem para garantir que a mensagem para o destino especificado.
  • Há duas formas principais da fila de mensagens do destino
  1. Fila (fila): mensagens peer (ponto-a-ponto)
  2. Theme (tema): publicação (publicar) / subscribe (inscrever) de mensagens
  • Ponto a ponto:
  1. remetente da mensagem para enviar uma mensagem, o corretor mensagem de colocá-lo em uma fila, o destinatário da mensagem recebe o conteúdo da mensagem da fila, a mensagem é lida da fila depois que a mensagem tem apenas um emissor e receptor, mas não significa que só pode haver um destinatário
  • Publicado inscrever:
  1. O remetente (editor) envia uma mensagem para o tema, vários destinatários (assinantes) de escuta (subscrever) este tema, ele receberá uma mensagem, ao mesmo tempo quando uma mensagem chega
  • JMS (Java Message Service) Java Message Service:
  1. especificação JVM é baseado no message broker. ActiveMQ, HornetMQ é a implementação JMS
  • AMQP (Advanced Message Protocol Queuing)
  1. Advanced Message Queuing Protocol, é um message broker especificação compatível com JMS RabbitMQ AMQP é alcançar uma

  • JMS e AMQP comparar

 

ETC.

AMQP

definições

fogo Java

protocolo de rede de nível de linha

Cross-language

não

é

Multi-plataforma

não

é

Modelo

Oferece dois modelos de mensagens:

(1), ponto-2-Peer

(2), Pub / sub

Oferece cinco modelos Mensagem:

(1), troca directa

(2), permuta Fanout

(3), a mudança tópico

(4), permuta cabeçalhos

(5), sistema de troca

Essencialmente, o pub / sub modelo últimos quatro anos e JMS não é muita diferença, apenas para fazer uma análise mais detalhada sobre o mecanismo de roteamento;

tipo de mensagem apoio

Vários tipos de mensagens:

Mensagem de texto

MapMessage

Alterar Mensagem

StreamMessage

ObjectMessage

Mensagem (apenas o cabeçalho da mensagem e propriedades)

byte[]

Quando a aplicação real, tem uma mensagem complexa, a mensagem pode ser enviada após a serialização.

Avaliação abrangente

JMS define padrão de nível API JAVA; no sistema de java, vários clientes podem interagir tanto através de JMS, não precisa modificar o código do aplicativo, mas seu fraco suporte para multi-plataforma;

AMQP define uma camada de protocolo de nível de arame padrão;-plataforma natural cruzada, transversal de língua apresenta.

  •  RabbitMQ Perfil

  • perfil RabbitMQ:

RabbitMQ é um erlang desenvolvido pela AMQP (advanved Message Protocol Queue) é uma implementação open source.

  • O conceito mensagem central

Mensagem, a mensagem é anônima, que consiste de um cabeçalho da mensagem e um corpo de mensagem. O corpo da mensagem é opaco, e o cabeçalho da mensagem através de uma série de atributos opcionais, esses atributos incluem encaminhamento-chave (teclas de encaminhamento), prioridade (prioridade relativa a outra mensagem), do modo de entrega (o que indica que a mensagem pode precisar armazenamento persistente) e assim por diante.

  • Editor

A mensagem produtores aplicativo cliente, também emitiu uma mensagem para o switch.

  • Troca

Mudar, para receber uma mensagem enviada pelo produtor e para encaminhar as mensagens para as filas do servidor. Troca Existem quatro tipos: direta (padrão), fanout, tópico e cabeçalhos, encaminhamento de mensagens de diferentes tipos de políticas de câmbio diferem

  • Fila

filas de mensagens, usado para guardar as mensagens enviadas, até ao consumidor. É um recipiente para a mensagem, a mensagem é o fim. Uma mensagem pode ser colocado em uma ou mais filas. Mensagem tem sido no interior fila, à espera de consumidores para se conectar à fila irá removê-lo.

  • Obrigatório

A ligao de uma associação entre a fila de mensagens e os interruptores. A ligação é uma regra de encaminhamento com base em chave e o interruptor de ligação da fila de mensagem, o comutador pode ser entendida para ser uma tabela de encaminhamento constituído pela ligação. Filas do Exchange e de ligação podem ser muitos para muitos relação.

  • Conexão

conexão de rede, como uma conexão TCP.

  • Canal

Canal, uma ligação de dados do canal de fluxo de multiplexagem independente bidireccional. conexão virtual canal é estabelecido nas conexões reais TCP, comandos AMQP são enviados através do canal, se é anunciado que a fila de subscrição ou receber mensagens, essas ações são feitas através do canal. Desde a criação de TCP e destruição são sobrecarga muito caro para o sistema operativo, de modo que a introdução da noção do canal, a fim de reutilizar uma ligação TCP.

  • Consumidor

mensagem consumidores indicando um aplicativo cliente para obter informações da fila de mensagens.

  • host Virtual

Web hosting, representa um grupo de interruptores, filas de mensagens e objetos relacionados. Web hosting é compartilhada o mesmo ambiente de autenticação e criptografia de domínio do servidor stand-alone. É essencialmente uma mini versão do servidor RabbitMQ, com a sua própria fila, interruptores, mecanismos e permissões de ligação para cada vhost. AMQP é a base do conceito de vhost deve ser especificado no momento da conexão, RabbitMQ é o vhost padrão /.

  • Corretor

entidade servidor Message Queue representa

  • mecanismo operacional RabbitMQ

  • O AMQP roteamento de mensagens

AMQP processo de roteamento de mensagens e desenvolvedores Java estão familiarizados com JMS existem algumas diferenças, AMQP adicionado ao Exchange e do papel de vinculação. Produtores colocar a mensagem postada na Bolsa, a fila de mensagens e, eventualmente, atingir o consumidor recebe, e decisão de mudar a mensagem de ligação deve ser enviada para a fila.

  • Tipo de câmbio

Há Exchange quando distribuição de mensagens, dependendo do tipo de diferenças de políticas de distribuição, havia quatro tipos: direto, fanout, tópico, cabeçalhos. cabeçalhos de mensagens AMQP corresponder exatamente o cabeçalho de roteamento em vez de chaves, interruptores e cabeçalhos de troca direta, mas o desempenho é ruim muito, quase não é usado mais, então um olhar direto mais em três tipos:

1), dirigir Troca

roteamento de mensagens Key (chave de roteamento), e se a chave de ligação Ligação interruptor consistente irá enviar uma mensagem para uma fila correspondente. chaves de roteamento exato coincidir com o nome da fila, se a fila está ligado a um interruptor de chave como na rota alegação de "cão", só para a frente o roteamento de mensagens chave rotulado como "cão" e não encaminhado "dog.puppy", e não entregar " dog.guard "e assim por diante. É uma correspondência exata, o modo unicast.

2), FANOUT Troca

Cada switch cabelo tipos de mensagens fanout são atribuídos a todas as filas ligada. interruptor fanout não processa as teclas de roteamento, simplesmente ligam para as filas de switch, cada mensagem enviada para o trocador será encaminhada para todas as filas ligados com o interruptor. Muito parecido com a transmissão de sub-rede, os hosts em cada sub-rede ter recebido uma cópia da mensagem. Tipo fanout de encaminhamento da mensagem é o mais rápido.

3), tópico Troca

combinando o modo de comutação tópico roteamento chave da mensagem alocação de atributo, a chave de roteamento e uma correspondência de padrão, as necessidades de caso para se ligar a um modo de fila. Ele vai cortar a corda roteamento chaves e combinações de teclas em palavras, essas palavras são separadas por pontos. Ele também irá identificar dois wildcards: o símbolo "#" e o símbolo "*". # Corresponde a zero ou mais palavras, * corresponde a uma palavra.

  • testes de instalação RabbitMQ

  • instalação RabbitMQ

1), a utilização de janela de encaixe espelho RabbitMQ montagem

[root@localhost ~]# docker pull rabbitmq:3-management

 

2), o espelho de partida RabbitMQ

[root@localhost ~]# docker run -d -p 5672:5672 -p 15672:15672 --name myRabbitMq 985adbf1306

-d: fundo ;-p: 5672 de mapeamento da porta de mapeamento da porta de acolhimento para recipiente de porta janela de encaixe, que é a porta do interface de gestão de cliente e 15672 RabbitMQ comunicação da porta; - nome: o nome do actualmente em execução; 985adbf1306 (IMAGEM ID)

 3), página RabbitMQ gerenciamento de acesso

nome de usuário, senha de hóspedes

 

  •  teste RabbitMQ

1), esquemas de mensagens RabbitMQ

2) Criar trocadores de trocar

 exchange.direct, exchange.fanout, exchange.topic

 

3) criar filas de mensagens Filas

olá, hello.news, hello.emps, helloWorld.news

4), e muda a fila de ligao

A fila de trabalho e comutadores devem ser obrigatório 

Respectivamente alternar exchange.direct, exchange.fanout, exchange.topic respectivamente, são ligados olá, hello.news, hello.emps, helloWorld.news

 regras vinculativas de Tópico não são os mesmos

5), envia uma mensagem para a fila de mensagens

  •  interruptor exchange.direct envia uma mensagem

 

 

  •  interruptor exchange.fanout envia uma mensagem

 

 

  • interruptor exchange.topic envia uma mensagem

 

 

 

  • SpringBoot integrar RabbitMQ

 1) Criar um projeto SpringBoot

 

Publicado 102 artigos originais · Louvor obteve 10 · vista 110 000 +

Acho que você gosta

Origin blog.csdn.net/WMY1230/article/details/104763030
Recomendado
Clasificación