rabbitmq

来源:互联网 发布:ubuntu安装apache2 php 编辑:程序博客网 时间:2024/06/16 13:16

Springboot 使用RabbitMQ

使用RabbitMQ,发送消息时并不是直接发送到Queue中,而是发送到exchange中然后依据发送时的routing key和绑定到exchange上的binding key将消息路由到Queue中。

queue&exchange&bingding key

这里写图片描述

//发送消息public void sendMessage() {     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");     String json = format.format(new Date());     rabbitTemplate.convertAndSend("exchange.test"/*exchange*/,"test.message"/*routing key*/, json);}//监听MQ队列@RabbitListener(queues = "test.queue")public void process1(@Payload String message) {    LOG.info("test.queue message: {}", message);}@RabbitListener(queues = "queue.message")public void process2(@Payload String message) {    LOG.info("queue.message message: {}", message);}

RabbitTemplate默认使用SimpleMessageConverter.createMessage()将消息Object转换成Message对象。

对于String,调用getBytes()方法将String转换为字节数据;对于Serializable将对象序列化为字节数组。


  • Virtual Host

    每个virtual host本质上都是一个RabbitMQ Server,拥有它自己的queue,exchagne,和bings rule等等。这保证了你可以在多个不同的application中使用RabbitMQ。

  • Exchange

    生产者将信息发送到Exchange中,然后Exchange根据Routing KeyBingding Key将消息分发到不同的Queue中

    Exchange 类型

    • Fanout

      fanout会把发送到该exchange中的消息转发到所有与它绑定的Queue中。
      这里写图片描述

    • Direct

      direct会把发送到该exchange中的消息路由到routing keybinding key完全匹配的Queue中。
      这里写图片描述

    • Topic

      topic会将消息路由到routing keybingding key相匹配的Queue中。
      这里写图片描述

0 0
原创粉丝点击