消息队列之rabbitMQ

rabbitMQ

1、什么是消息队列?

可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。目前使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka,RocketMQ。
可以想象一下应用场景:双十一千万用户同时进行秒杀,如果只是简单的并行处理就会导致服务器崩溃。则可以使用MQ,把并行变成了串行,谁先进入队列,谁先执行。就可以很好的处理千万量级的同步事件。
使用条件:调用者A通过消息队列MQ调用执行者B,A不需要B的任何返回值,只是简单的A启动B。A发送消息到队列,B去队列中拿消息再去处理执行。

2、rabbitMQ实现

对比
1、docker安装
15672是控制台端口,可以通过网址访问。(注意阿里云要开端口号)http://服务器host地址:15672

docker run -d --name rabbitMQ -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -p 5672:5672 -p 15672:15672 rabbitmq:management

2、流程
多个队列时候需要一个交换机。
流程
3、后端代码实现
1、导包

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

2、rabbitMQ控制台中添加新的队列

添加队列
3、yml中配置:

spring:
  rabbitmq:
    host: 192.168.80.141//主机地址
    port: 5672  //通信端口号
    username: admin  
    password: 1234567

4、生产端(发消息)
代码:

 @Resource
 RabbitTemplate rabbitTemplate;
 @Test  //“testqueue” 队列名称  “22222” 发送的内容,如果是对象,请序列化。
 public void handler() throws JsonProcessingException, UnsupportedEncodingException {
     rabbitTemplate.convertAndSend("testqueue","222222222222222222222222");
     System.out.println("发送完成");
 }

5、消费者代码:(取消息,需要监听!!!!)
注意一定要放入IOC容器中

package com.neuedu.mail;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component //!!!!!
public class TestCustomer {
    @RabbitListener(queues = "testqueue")
    public void receiver(Message message) {
        System.out.println(new String(message.getBody()));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值