笔记 ── Springboot 整合 RabbitMQ (HelloWorld)模型

(HelloWorld)模型

在这里插入图片描述

  • P:生产者,也就是要发送消息的程序
  • C:消费者:消息的接受者,会一直等待消息到来。
  • queue:消息队列,图中红色部分。类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息。

maven依赖

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

application.properties

spring.rabbitmq.host=192.168.56.101
spring.rabbitmq.port=5673
spring.rabbitmq.username=test
spring.rabbitmq.password=123456
spring.rabbitmq.virtual-host=/ems

RabbitConfig

@Configuration
public class RabbitConfig {
    //队列TestDirectQueue
    @Bean
    public Queue TestDirectQueue() {
        // durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效
        // exclusive:默认也是false,是否独占队列
        // autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。
        return new Queue("TestDirectQueue",true,false,false);
    }
}

生产者

@RestController
public class SendMessageController {

    @Autowired
    RabbitTemplate rabbitTemplate;  //使用RabbitTemplate,这提供了接收/发送等等方法

    @GetMapping("/sendDirectMessage")
    public String sendDirectMessage() {
      //第一个参数是交换机名称,由于没有"",第二个是routingKey
      //生产端没有指定交换机只有routingKey和Object,也就是说这个消费方产生hello队列,放在默认的交换机(AMQP default)上。
      //而默认的交换机有一个特点,只要你的routerKey与这个交换机中有同名的队列,他就会自动路由上。 
      //生产端routingKey 叫TestQueue,消费端生产TestQueue队列。他们就路由上了
      	Map<String, Object> map = new HashMap<>();
        map.put("messageId", "test");
        //使用默认交换机
        rabbitTemplate.convertAndSend("", "TestDirectQueue", map);
        return "ok";
    }
}

消费者

@Component
@RabbitListener(queues = "TestDirectQueue")//监听的队列名称 TestDirectQueue
public class DirectReceiver {

    @RabbitHandler
    public void process(Map testMessage) {
        System.out.println("DirectReceiver消费者收到消息  : " + testMessage.toString());
    }

}

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值