RabbitMQ

什么是消息队列?

消息队列是一种在应用(服务)间的通讯方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。

常用的消息队列有哪些?

  • RabbitMQ
  • Kafka
  • ActiveMQ
  • RocketMQ(阿里的)

RabbitMQ实战

安装RabbitMQ
  • 方式1:windows下安装包安装
    • 因为RabbitMQ 是一个由 Erlang 语言开发的,所有安装之前要安装Erlang:Erlanng官网
    • 去RabbitMQ下载安装包:RabbitMQ官网
    • 开始安装-RabbitMQ安装包进行傻瓜式安装即可
    • 在windows下配置erlang环境变量
    • 进入RabbitMQ的安装bin目录,执行命令:
    rabbitmq-plugins enable rabbitmq_management---安装管理插件
    
  • 方式2:docker安装(笔者推荐)
docker pull rabbitmq:3.7.7-management :拉取镜像
docker run -d  -p 15672:15672(管理界面端口映射)  -p  5672:5672(TCP端口映射,服务通过此端口与RabbitMQ建立TCP连接,完成异步消息监听和发送)   --name rabbitMQ 2888deb59dfc(拉取镜像的id)
连接配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
依赖包
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.47</version>
</dependency>

注:用localhost连接只可以在默认账户下,若想用本机ip连接需创建新的用户并赋予相应管理员权限。

消息发布者
  • 定义消息队列(发布者定义即可)
@Configuration
public class RabbitConfig {
    @Bean
    public Queue queue() {
        return new Queue("rabbitMQ_message" , true);
    }
}
  • 接口入参
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RabbitMQMessageCmd {
    private String messageName;
    private String content;
}

  • 自定义消息
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RabbitMQMessage {
    private String messageName;
    private String content;
}

  • 发布消息
@RestController
@RequestMapping("/rabbitMQ")
public class RabbitMQController {

    @Autowired
    private RabbitTemplate template;

    @PostMapping("/sendMessage")
    public void sendRabbitMQMessage(@RequestBody RabbitMQMessageCmd cmd){
        String json = JSONObject.toJSONString(new RabbitMQMessage(cmd.getMessageName(),cmd.getContent()));
        template.convertAndSend("rabbitMQ_message",json);
    }
}

消息消费者
  • 消息监听处理
@Component
@Slf4j
public class RabbitMQListener {

    @RabbitListener(queues = "rabbitMQ_message")
    public void listener(String jsonString){
        RabbitMQMessage message = JSONObject.parseObject(jsonString, RabbitMQMessage.class);
        log.info(message.getMessageName());//处理你自己的业务代码
    }
}

控制台打印消息
在这里插入图片描述

RabbitMQ管理端查看队列里未消费的消息
  • localhost:15672登录管理端查看
  • 在这里插入图片描述
总结

1.rabbitMQ建议使用docker安装。
2.连接配置注意连接的ip。
3.docker安装后注意端口的映射。
4.笔者认为RabbitMQ配置简单容易理解和上手。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值