Directorio artículo
- 1 ¿Por qué utilizar RabbitMQ
- 2 Message Queue Fundamentos
- 2.1 Proveedor
- 2.2 Consumidor
- paso 2.3 mensaje no se utiliza cuando la cola de mensajes
- 2.4 Mensaje de pasar la cola de mensajes
- 2.5 ¿Qué es una cola
- 2.6 Lo que se almacena en la cola
- 2.7 Relaciones colas y aplicaciones
- Caso 3 Introducción
1 ¿Por qué utilizar RabbitMQ
base 1.1 RabbitMQ
AMQP
, Es decir Advanced Message Queuing Protocol
, Advanced Protocolo de mensajes de cola, es un protocolo de capa de aplicación estándar abierto para el diseño de middleware orientado a mensajes.
agente de Message entre los componentes se utiliza principalmente para 解耦
el remitente, el mensaje no tiene que ser consciente de la presencia del mensaje de usuario, y viceversa.
AMQP
La característica principal es orientado a mensajes, colas, enrutamiento (incluyendo el punto y de publicación / suscripción), la fiabilidad y la seguridad.
RabbitMQ
Es una fuente abierta AMQP
aplicación, con un lado del servidor Erlang
idioma, es compatible con una gran variedad de clientes, tales como: Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP
y soporte AJAX
. En un sistema distribuido para almacenar y reenviar mensajes, en términos de facilidad de uso, escalabilidad, alta disponibilidad, y al hacerlo así.
1.2 paso mutación síncrona
1.2.1 proceso uno por uno
A continuación se muestra, el proceso se transmite sucesivamente, a saber: una orden -> Orden de servicio -> mensajes de texto -> Email- cabello> hecho de empuje, por lo que una gran cantidad de tiempo
1.2.2 grupo de subprocesos
Como se muestra a continuación en orden abrir una agrupación de hebras de servicio, el hilo no esperar a los resultados de los otros hilos, puede ser convertido a asíncrono síncrono, pero no desacoplado
1.2.3 con el sistema MQ
Como se muestra a continuación, utilizando colas de mensajes, MQ
el sistema puede llegar a ser asíncrona a síncrona: cuando las órdenes de usuario, MQ
el sistema devuelve el ID de orden, no en el tubo de MQ
sistema, de hecho, MQ
el sistema va a interactuar con el sistema y no hay otros servicios afectados y el orden
1.3 Servicio desacoplado
El uso del servicio MQ también puede desacoplar entre ellos
1.4 Flujo de corte frontal
servicio de pico de Internet, si el enorme volumen de solicitudes enviadas al servicio de pico que podría permitir que el servidor de rodillas, esta vez con una cola de mensajes, recibir y procesar una gran demanda, ya que no se ocupa de solicitud de pico, por lo tanto, tenemos que vaciar en la servicio. Este tiempo se puede ajustar en la cola de mensajes dentro de un umbral, si se alcanza un determinado pedido, no enviar a la subida de los servicios, y se envía a los demás servicios
2 Message Queue Fundamentos
2.1 Proveedor
Noticias productor, se entrega el programa de mensajes.
2.2 Consumidor
noticias de los consumidores, es que el programa acepta mensajes.
paso 2.3 mensaje no se utiliza cuando la cola de mensajes
2.4 Mensaje de pasar la cola de mensajes
2.5 ¿Qué es una cola
Al igual que una cola de almacén de las mercancías del almacén o tienda, un punto de tránsito entre la producción de la fábrica de los bienes y los usuarios comprar bienes
2.6 Lo que se almacena en la cola
En rabbitMQ
el flujo de información desde la aplicación de Rabbitmq
la cola, toda la información se puede almacenar sólo en una cola. Cola puede almacenar una gran cantidad de información, ya que es básicamente un búfer ilimitado, siempre que el equipo tiene suficiente espacio de almacenamiento.
2.7 Relaciones colas y aplicaciones
Una pluralidad de productores pueden enviar mensajes a la misma cola, la pluralidad de los mensajes puede ser sólo una cola mediante la recepción de los mismos datos de la
Caso 3 Introducción
perfil 3.1 RabbitMQ
3.1.1 coordenadas RabbitMQ
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
RabbitMQ 3.1.2 añadió la configuración relevante
# 给应用起一个名字
spring.applicatin.name=springcloud-mq
# RabbitMQ的安装地址
spring.rabbitmq.host=192.168.126.140
# RabbitMQ的访问端口,和页面的15672端口不一样
spring.rabbitmq.port=5672
# RabbitMQ的用户名
spring.rabbitmq.username=admin
# RabbitMQ的密码
spring.rabbitmq.password=123456
3.2 sección del Código
3.2.1 Creación de colas
@Configuration
public class QueueConfig {
//@Bean 方法的名字是默认的id名字,因此不要使用get+方法名
@Bean
// 注意:Queue要使用:org.springframework.amqp.core.Queue
public Queue createQueue() {
return new Queue("test_mq");
}
}
3.2.2 Creación de proveedor de mensajería
@Component
public class QueueSender {
@Autowired
private AmqpTemplate amqpTemplate;
public void send (String msg) {
//向消息队列发送消息
//参数一: 队列的名称。
//参数二: 消息
this.amqpTemplate.convertAndSend("test_mq",msg);
}
}
3.2.3 destinatario del mensaje
@Component
public class QueueReciver {
//此处的注解用来检测某一个特定队列是否变化
@RabbitListener(queues="test_mq")
public void reciver(String msg) {
System.out.println("=====================");
System.out.println(msg);
System.out.println("=====================");
}
}
3.2.4 clase de prueba
@RunWith(SpringRunner.class)
@SpringBootTest(classes=AppAction.class)
public class QueueTest {
@Autowired
private QueueSender sender;
/*
* 测试消息队列
*/
@Test
public void test(){
this.sender.send("Hello RabbitMQ");
}
}
3.3 Enlaces negaron error
3.3.1 Nombre de usuario Contraseña incorrecta
Error:
ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
Solución:
- Bajo cuidadosamente comprobar la contraseña de la cuenta es correcta
- Después de entrar a las siguientes
Can access virtual hosts
modificaciones a/
3.3.2 Centos problema nombre de host de la máquina virtual
3.3.2.1 Centos7 cambiar el nombre de host en dos lugares consistentes
Por Centos7
Para modificar los restos de nombre de host, a continuación, utilizar hostnamectl
, así como en /etc/hosts
este documento que cambiarlo
3.3.2.2 Centos6 cambiar el nombre de host en dos lugares consistentes
Modificar /etc/hosts
los archivos de
allí /etc/sysconfig/network
el archivo siguiente