SpringBoot integra ActiveMQ [versión súper detallada]

Tabla de contenido

Introducción

¿Qué es ActiveMQ?

El concepto de JMS

Instalar y ejecutar ActiveMQ en Linux

Ingrese a la página de administración de activemq

SpringBoot integra el modo de cola ActiveMQ

 productor

dependencia de pom

Configurar yml 

 clase de inicio

 Configurar canales

Prueba de envío de información al canal.

recipiente

dependencia de pom

configuración yml

clase de inicio

Aceptar clase mq

SpringBoot integra el modo de tema ActiveMQ

 productor

Crear canal temático

 Prueba enviando un mensaje para entrar al tema

recipiente

 yaml

 clase receptora


Introducción

¿Qué es ActiveMQ?

Message Queue es un método de comunicación asincrónica entre procesos o subprocesos. Al utilizar una cola de mensajes, el productor de mensajes guardará el mensaje en la cola de mensajes hasta que el consumidor del mensaje lo recoja. Realizar el desacoplamiento de servicios y mejorar la confiabilidad y escalabilidad del sistema.
En la actualidad, existen muchas colas de mensajes de código abierto de uso común, como RabbitMQ, ActiveMQ, Redis, Kafka, etc., que a menudo se denominan middleware de mensajes.
Este artículo toma Apache ActiveMQ como ejemplo para integrar el modo de cola y el modo de transmisión de ActiveMQ y es compatible con ambos.
 

El concepto de JMS

JMS

JMS, la interfaz de programación de aplicaciones del servicio de mensajes Java, es una API de middleware orientada a mensajes (MOM) en la plataforma Java, que se utiliza para enviar mensajes entre dos aplicaciones o en un sistema distribuido para comunicación asincrónica. Java Message Service es una API independiente de la plataforma y la mayoría de los proveedores de middleware brindan soporte para JMS. La relación entre JMS y ActiveMQ es similar a la relación entre JDBC y los controladores JDBC. .

JMS incluye dos modelos de mensajes: punto a punto y publicador/suscriptor;
punto a punto: – El remitente del mensaje envía el mensaje, el agente del mensaje lo coloca en una cola y el receptor del mensaje obtiene el contenido del mensaje de la cola. Después de leer el mensaje, se elimina de la cola – El mensaje tiene solo un remitente y un receptor, pero eso no significa que solo pueda haber un receptor Publicar y suscribirse: –
El remitente (editor) envía el mensaje a el tema, y ​​varios receptores (suscriptores) escuchan (suscriben) este tema, entonces el mensaje se recibirá al mismo tiempo cuando llegue el mensaje

 JMS define una interfaz unificada para unificar las operaciones de mensajes;
JMS restringe el uso del lenguaje Java;
JMS especifica dos modelos de mensajes; y el modelo de mensajes de AMQP es más rico.

Instalar y ejecutar ActiveMQ en Linux

Enlace: https://pan.baidu.com/s/1tZSs6iefzKVLHSwxihQ3Nw?pwd=1234 
Código de extracción: 1234

//复制到虚拟机,解压出来
tar -zxvf apache-activemq-5.14.5-bin.tar.gz

//解压完成之后,进入文件/bin目录下
cd apache-activemq-5.14.5/bin
//启动activemq
 ./activemq start

 Comenzó con éxito

Aviso:

        Desactivar el cortafuegos

Ingrese a la página de administración de activemq

http://su propia dirección IP: 8161 /  para ingresar a la página de administración de ActiveMQ 

Ingrese la contraseña de la cuenta: admin  

 

 

SpringBoot integra el modo de cola ActiveMQ

versión de springboot: 2.3.4.RELEASE

Aviso:

Modo de cola:

        El modo de cola puede entenderse como un modo de primero en entrar, primero en salir: después de que el productor publica el mensaje, lo almacena en la cola y espera a que el oyente lo reciba. ¡El oyente recibirá la información en la cola cuando esté en línea! Pero tan pronto como se reciba, la información de la cola desaparecerá. 

 productor

dependencia de pom

   <!-- ActiveMQ -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

Configurar yml 

spring:
 
  activemq:
    broker-url: tcp://自己的activemq服务器ip:61616
    packages:
      #配置信任所有的包,这个配置为了支持发送对象消息
      trust-all: true
    user: admin
    password: admin

 clase de inicio

@SpringBootApplication
@EnableJms #开启JMS
public class SpringBootThree {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootThree.class,args);
    }
}

 Configurar canales


/**
 * 专门配置mq通道的配置类
 */
@Configuration
public class QueueConfig {


    @Bean(name = "queueName")
    Queue queueName(){

        return  new ActiveMQQueue("test_queue");
    }


}

Prueba de envío de información al canal.

@SpringBootTest
public class RedisTest {

  
  @Autowired
    JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
    Queue queueName;
    @Test
    public void test5(){

            String message="我是发送消息的人,听得到吗";
            jmsMessagingTemplate.convertAndSend(queueName, message);

    }

}

recipiente

dependencia de pom

<!-- ActiveMQ -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>

configuración yml

server:
  port: 10006


spring:

  activemq:
    broker-url: tcp://自己的activemq服务器的ip:61616
    packages:
      #配置信任所有的包,这个配置为了支持发送对象消息
      trust-all: true
    user: admin
    password: admin
  

clase de inicio

@SpringBootApplication
public class ConsumerMain10006 {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerMain10006.class,args);
    }
}

Aceptar clase mq

/**
 * 用于监听MQ
 */
@Component
public class MQConfig {




    @JmsListener(destination = "test_queue")
    public  void  onMessage(String message){

           
        System.out.print(message)
        //获取到消息后可以干一些事情
      


    }
}

SpringBoot integra el modo de tema ActiveMQ

Aviso:

      La diferencia entre el modo de tema y el modo de cola:

                1. Los mensajes publicados en modo tema se pueden distribuir a todos los suscriptores.

               2. El modo de tema es un modo de publicación-suscripción. Solo cuando el suscriptor (clase de escucha) está en línea, se puede recibir el mensaje. Si la conexión está en el medio, no se puede recibir el mensaje anterior y solo se puede recibir la información posterior. ¡ser recibido!

               

 productor

El pom, yml, la clase de inicio y el modo de cola del productor son los mismos

Crear canal temático



/**
 * 专门配置mq通道的配置类
 */
@Configuration
public class QueueConfig {


    @Bean(name = "queueName")
    Queue queueName(){

        return  new ActiveMQQueue("test_queue");
    }

//主题(发布\订阅模式)通道
   @Bean(name="queueFind")
    Topic queueFind(){
        return new ActiveMQTopic("cctv");
    }


}

 Prueba enviando un mensaje para entrar al tema

@SpringBootTest
public class RedisTest {

  
  @Autowired
    JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
    Queue queueName;

@Autowired
Topic  queueFind;

    @Test
    public void test5(){

            String message="我是发送消息的人,你接受我就没了";
            jmsMessagingTemplate.convertAndSend(queueName, message);

    }

 @Test
    public void test6(){

            String message="我是主题可以发布所有监听我的人,但是我发布你必须在线";
            jmsMessagingTemplate.convertAndSend(queueFind, message);

    }

}

recipiente

pom es lo mismo que la cola de clases de inicio   

 yaml

spring:

  activemq:
    broker-url: tcp://自己acvtvemq服务器的ip:61616
    packages:
      #配置信任所有的包,这个配置为了支持发送对象消息
      trust-all: true
    user: admin
    password: admin
   
#开启主题策略,默认是关闭 开启主题模式
  jms:
    pub-sub-domain: true

 clase receptora

/**
 * 用于监听MQ
 */
@Component
public class MQConfig {




    @JmsListener(destination = "test_queue")
    public  void  onMessage(String message){

           
        System.out.print(message)
        //获取到消息后可以干一些事情
      

    }


    
    @JmsListener(destination = "cctv")
    public  void  cctv(String message){

           
        System.out.print(message)
        //获取到消息后可以干一些事情
      

    }
}

Supongo que te gusta

Origin blog.csdn.net/wang20000102/article/details/132725583
Recomendado
Clasificación