Middleware de mensajería de inicio 2 --- --- patrones de mensajería RabbitMQ

La segunda nos introduce brevemente algunos de modo de mensajería RabbitMQ:

1, un modo directo (Directo)

  (1) Modo Directo Introducción

Necesitamos enviar mensajes a utilizar este modo cuando sólo un nodo, que es la forma más simple.

Dirigir Exchange para enviar ningún mensaje será enviado al RouteKey especifica cola.
1. El uso RabbitMQ general viene Cambio: "" (el nombre es una cadena vacía Exchange, en lo sucesivo, por defecto Exchange).
2. Intercambio no tiene por qué llevarse a cabo en cualquier tipo de enlaces de operación (Encuadernación) de modo.
Requiere un "RouteKey" 3. mensajería, puede entenderse simplemente como el nombre de la cola para ser enviada.
4. Si el nombre de la cola no existe RouteKey VHOST especificado, entonces el mensaje será descartado. 

  (2) crear la cola 

Antes de hacer el siguiente ejemplo, primero creamos una cola llamada itcast.

Durabilidad: si se hace la persistencia duradero (larga duración) transitoria (temporal)
Auto del Eliminar: si desea eliminar automáticamente 

  (3) Productor código que mensaje implementos ---

       En primer lugar, crear un rabbitmq_demo proyecto, introducido amqp dependencia comenzado, pom.xml de la siguiente manera:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐parent</artifactId>
    <version>2.0.1.RELEASE</version>
<relativePath/>
</parent>
<properties>
    <project.build.sourceEncoding>UTF‐8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF‐8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring‐boot‐starter‐amqp</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring‐boot‐starter‐test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

      En segundo lugar, escribir un archivo de configuración application.yml

spring:
  rabbitmq:
    host: 192.168.184.134

      En tercer lugar, la clase comienza a escribir 

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

      En cuarto lugar, las clases de prueba de escritura

@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class)
public class MqTest {

    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Test
    public void testSend(){
        rabbitTemplate.convertAndSend("test","测试");
    }
}

  (4) Código de consumidor que implementa el mensaje --- 

      En primer lugar, escribir una clase consumidor de mensajes

@Component
@RabbitListener(queues="test" )
public class Customer1 {

    @RabbitHandler
    public void showMessage(String message){
        System.out.println("itcast接收到消息:"+message);
    }
}

      En segundo lugar, ejecute la clase de arranque, se puede ver acaba de enviar un mensaje en la consola 

2, el modo de ruptura (Fanout) 

  el modo de avería (1) Introducción

Cuando necesitamos un mensaje enviado a múltiples colas, tenemos que utilizar este modo. La figura siguiente:

Cualquier mensaje enviado a Fanout Cambio serán enviados a todos los enlaces de cambio (unión) de
la cola.
1. El patrón puede ser entendido como una tabla de enrutamiento
2. Este modo no requiere RouteKey
3. Este modo requiere el avance sobre Exchange se unen, se puede unir una pluralidad de Cambio de cola, cola puede ser atado con una pluralidad de Cambio conjunto.
4. Si el mensaje recibido y Exchange no se une ninguna cola, entonces el mensaje será descartado. 

  (2) intercambiador de cola Binding

      En primer lugar, añadir la cola y la cola itheima kudingyu

      En segundo lugar, el nuevo chuanz interruptor (clara y luego revisar la sección anterior)

      En tercer lugar, las dos colas itheima itcast y con destino a la Chuanzi intercambiador 

      Haga clic Chuanzi en la interfaz de administración del conmutador 

      Fijaciones y haga clic en la opción Agregar Encuadernación itheima kudingyu 

      Después de efecto de unión es el siguiente:

  (2) de código que productor de mensajes implementos ---

@Test
public void testSendFanout(){
    rabbitTemplate.convertAndSend("chuanzhi","", "分列模式test");
}

 (3) el código de consumidor que implementa el mensaje ---

      En primer lugar, crear una clase de escucha de mensajes para el seguimiento de noticias itheima

@Component
@RabbitListener(queues="itheima" )
public class Customer2 {

    @RabbitHandler
    public void showMessage(String message){
        System.out.println("itheima接收到消息:"+message);
    }
}

      En segundo lugar, crear una clase de escucha de mensajes para el seguimiento de noticias kudingyu 

@Component
@RabbitListener(queues="kudingyu" )
public class Customer3 {

    @RabbitHandler
    public void showMessage(String message){
        System.out.println("kudingyu接收到消息:"+message);
    }
}

  (4) Ensayo, dos mensajes se puede ver en la consola

3, tema (tema) 

  (1) Temas Introducción

Cualquier mensaje enviado a la Bolsa tema serán enviados a todos los afectados especificados RouteKey temas cola.

Como se muestra por encima de
tal manera que el conmutador de mensajes de diferentes fuentes puede llegar a una columna, de hecho, que es mejor para comprender el significado de coincidencia aproximada, por ejemplo: se muestra en la columna de routekey rojo para EE.UU. #, # representantes coincide con cualquier carácter, pero para que el mensaje llegue a esta columna, EE.UU.. # debe coincidir con la parte posterior del bien están libres. Figura usa.news
usa.weather, se puede encontrar en la cola roja, el símbolo # coincide con una o más palabras, símbolos * coincide con una palabra más, ni menos. Por lo tanto, EE.UU.. # Se puede adaptar a usa.news.XXX, pero el EE.UU.. * Sólo coincide con usa.XXX.
Nota:
Interruptor de fin de cuentas es una lista de nombres y la cola se une. Cuando se envía un mensaje al interruptor, de hecho, el mensaje se enruta a comparar claves, encaminar mensajes desde el último canal que está conectado a la misma lista de las asociaciones en el conmutador. Cualquier mensaje enviado a la Bolsa tema serán enviados a todos los temas RouteKey afectados especificados cola

1. Este modelo es más complejo, en términos simples, es que cada cola tiene su propio tema en cuestión, se presentan todos los mensajes con un "título" (RouteKey), Exchange reenviar el mensaje a todos los temas en cuestión pueden desdibujar y RouteKey cola de juego.
2. Este modelo requiere RouteKey, tal vez para enlazar el avance sobre Exchange.
3. Al realizar la unión, para proporcionar un tema de preocupación para la cola, como "# .log. #" Indica que se transmitirá el cuidado de colas de todos los mensajes implicados en log (a RouteKey como mensaje "MQ.log.error" a la cola).
4. "#" representa 0 o varias palabras clave, "" indica una palabra clave. Como se puede combinar con 'log.warn', no puede coincidir con el 'log.warn.timeout' "Log."; "Entrar #", sin embargo se puede emparejar con ambos.
5. Del mismo modo, si Exchange no se encuentra posible para que coincida con el RouteKey cola, será descartado este mensaje.

  (2) crear la cola con fijaciones

      En primer lugar, un nuevo interruptor, seleccionar el tipo de tema

      En segundo lugar, haga clic en el nuevo interruptor topictest 

      Añadir reglas de coincidencia, añadir la lista es la siguiente: 

  (2) la ejecución de código 

      En primer lugar, la preparación de los métodos de la clase de prueba:

@Test
public void testSendTopic1(){
    rabbitTemplate.convertAndSend("topictest","goods.aaa","主题模式");
}

      En segundo lugar, la producción: itcast recibido el mensaje: temas 

@Test
public void testSendTopic2(){
    rabbitTemplate.convertAndSend("topictest","article.content.log","主题模式");
}

      En tercer lugar, salida: itheima recibido el mensaje: temas

@Test
public void testSendTopic3(){
    rabbitTemplate.convertAndSend("topictest","goods.log","主题模式");
}

     En cuarto lugar, la salida:

itheima接收到消息:主题模式
itcast接收到消息:主题模式
kudingyu接收到消息:主题模式

En este punto, modelo de mensajería RabbitMQ tiene tres introducción completos, señoras y zapatos para niños, de lejos operación.


 

 

 

 

 


 

 

Publicado 41 artículos originales · ganado elogios 47 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/u014526891/article/details/87539206
Recomendado
Clasificación