Este artigo fala principalmente sobre integração básica. Vamos iniciar o código primeiro e depois falar sobre recursos avançados.
Alguns termos no RabbitMQ
Se você abrir o RabbitMQ Web Console, descobrirá que uma das exangulos é difícil de entender. Deixe -me explicar brevemente abaixo.
Intercâmbio
Um interruptor é como um roteador. Primeiro, enviamos mensagens para o comutador e, em seguida, o comutador entrega mensagens para a fila correspondente de acordo com a chave de roteamento. (É importante entender esse conceito, e isso é totalmente refletido no código subsequente)
Fila
A fila é fácil de entender, então não há necessidade de explicá -la.
Vinculativo
Como o Switch sabe qual fila para entregar esta mensagem? Isso requer ligação. Provavelmente é: use um RoutingKey para vincular uma fila a uma determinada troca, para que o Switch saiba qual fila para entregar a mensagem de acordo com a chave de roteamento. (Isso é totalmente refletido no código subsequente)
Junte -se a RabbitMQ Maven Dependências
<Depencency> <PuerpId> org.springframework.boot </frugiD> <ArtifactId> Spring-boot-starter-amqp </artifactId> </dependency>
Adicione outra dependência (essa dependência pode ser omitida, usada principalmente para simplificar o código)
<Depencency> <GrupidId> cn.hutool </frugiD> <ArtifactId> hutool-all </artifactId> <versão> 4.0.2 </sisters> </pendence>
Rabbitmqconfig.java Configuração
@ConfigurationPublic Classe rabbitmqconfig {public final static string fileue_name = "spring-boot-quêue"; public final Static String Exchange_name = "Spring-Boot-Exchange"; public final Static String Routing_Key = "Spring-Boot-Key"; // Crie uma fila @Bean Public Queue fileeue () {return New fila (fila_name); } // Crie um tipo de tópico Exchange @Bean public topicexchange Exchange () {return new TopicexChange (Exchange_name); } // Use a chave de roteamento (RoutingKey) para ligar a fila (fila da fila, TopicexChange Exchange) {return bindingbuilder.bind (fila) .to (troca) .with (rotering_key); } @Bean public ConnectionFactory ConnectionFactory () {CachingConnectionFactory ConnectionFactory = new CachingConnectionFactory ("127.0.0.1", 5672); ConnectionFactory.setUsername ("Guest"); ConnectionFactory.SetPassword ("Guest"); Retornar ConnectionFactory; } @Bean Public Rabbittemplate Rabbittemplate (ConnectionFactory ConnectionFactory) {Return New Rabbittemplate (ConnectionFactory); }}Produtor
Basta chamar o método ConvertandSend do Rabbittemplate diretamente. Também pode ser visto no código a seguir que não enviamos a mensagem diretamente para a fila, mas primeiro o envie para o comutador, e o comutador entrega nossa mensagem para a fila correspondente de acordo com a chave de roteamento.
@RestControllerPublic Classe ProductOntroller {@AUTOWIRED PRIVADO RABBITTEMPLATE RABBITTEMPLATE; @GetMapping ("/sendMessage") public Object sendMessage () {new Thread (()-> {for (int i = 0; i <100; i ++) {string value = new DateTime (). rabbittemplate.convertandsend (rabbitmqconfig.exchange_name, rabbitmqconfig.Routing_key, valor); retornar "ok"; }}consumidor
Também é muito simples para os consumidores. Eles só precisam adicionar a anotação @RabbitListener ao método correspondente e especificar o nome da fila a ser ouvido.
@ComPonentPublic Classe Consumer {@rabbitListener (filas = rabbitmqconfig.queue_name) public void ConsumpingMessage (string message) {console.log ("Consuma Mensagem {}", mensagem); }}Execute o projeto
Execute o projeto, abra o navegador e digite http://localhost:9999/sendMessage . No console, você pode ver os produtores constantemente enviando mensagens e consumidores constantemente consumindo mensagens.
Abra o RabbitMQ Web Console e você também pode ver os comutadores e as filas que configuramos no código agora, além de informações de ligação.
Clique para inserir os detalhes da troca
Conclusão
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.