当前位置: 首页 > news >正文

Java引用RabbitMQ快速入门

这里写目录

  • Java发送消息给MQ
  • 消费者接收消息
  • 实现一个队列绑定多个消费者
    • 消息推送限制
  • Fanout交换机
  • 路由的作用
  • Direct交换机
    • 使用案例

Java发送消息给MQ

    public void testSendMessage() throws IOException, TimeoutException {// 1.建立连接ConnectionFactory factory = new ConnectionFactory();// 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码factory.setHost("117.72.210.37");factory.setPort(5672);factory.setVirtualHost("bthost");factory.setUsername("admin");factory.setPassword("hURA6SxC6YrBFoqt");// 1.2.建立连接Connection connection = factory.newConnection();// 2.创建通道ChannelChannel channel = connection.createChannel();// 3.创建队列String queueName = "simple.queue";channel.queueDeclare(queueName, false, false, false, null);// 4.发送消息String message = "hello, rabbitmq!";channel.basicPublish("", queueName, null, message.getBytes());System.out.println("发送消息成功:【" + message + "】");// 5.关闭通道和连接channel.close();connection.close();}

消费者接收消息

    @RabbitListener(queues = "simple.queue")//指定要监听哪个队列public void listenSimpleQueueMessage(String msg){System.out.println("spring 消费者接收到消息 :【" + msg + "】");throw new RuntimeException("故意的");//MQ会一直投递消息
//        throw new MessageConversionException("故意的");//失败后返回reject不再投递}

实现一个队列绑定多个消费者

在这里插入图片描述

消息推送限制

在这里插入图片描述
如果没有设置限制话不管你上一条消息是否处理完,消费者会一直接收,设置厚只有处理完消息才会接受下一条。
在这里插入图片描述

Fanout交换机

在这里插入图片描述
在这里插入图片描述
将消息发送给交换机

    @Testpublic void testFanoutExchange() throws InterruptedException {//交换机名称String exchangeName = "itcast.fanout";String message = "hello, everyone";//这次是将消息发送到交换机,不再是队列rabbitTemplate.convertAndSend(exchangeName, "",message);}

在这里插入图片描述
接收消息

    @RabbitListener(queues = "fanout.queue1")public void listenFanoutQueue1(String msg) {System.out.println("消费者1接收到Fanout消息:【" + msg + "】");}@RabbitListener(queues = "fanout.queue2")public void listenFanoutQueue2(String msg) {System.out.println("消费者2接收到Fanout消息:【" + msg + "】");}

路由的作用

在这里插入图片描述

Direct交换机

在这里插入图片描述

使用案例

在这里插入图片描述
交换机绑定
在这里插入图片描述

    @RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue1"),exchange = @Exchange(name="itcast.direct",type = ExchangeTypes.DIRECT),key = {"red","blue"}))public void listenDirectQueue1(String msg){System.out.println("消费者1接收到Direct消息:【" + msg + "】");}@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue2"),exchange = @Exchange(name="itcast.direct",type = ExchangeTypes.DIRECT),key = {"red","yellow"}))
**    @Testpublic void testDirectExchange() {//交换机名称String exchangeName = "itcast.direct";String message = "hello, blue";//这次是将消息发送到交换机,不再是队列rabbitTemplate.convertAndSend(exchangeName, "red", message);}**

在这里插入图片描述
key是谁对应消费者就会接收到对应key的消息

http://www.xdnf.cn/news/297307.html

相关文章:

  • 2025 后端自学UNIAPP【项目实战:旅游项目】1、创建项目框架
  • Linux之基础开发工具二(makefile,git,gdb)
  • react naive 网络框架源码解析
  • React Hooks 深入浅出
  • EasyRTC嵌入式音视频通信SDK技术,助力工业制造多场景实时监控与音视频通信
  • Apache Velocity代码生成简要介绍
  • css3伸缩盒模型第二章(侧轴相关)
  • 薪技术|0到1学会性能测试第45课-apache调优技术
  • 2025年03月电子学会青少年软件编程 图形化二级考级真题——风车
  • 智能修复大模型生成的 JSON 字符串:Python 实现与优化
  • VMware搭建ubuntu保姆级教程
  • 智能推理DeepSeek-R1+Word深度整合业级智能办公构建
  • 手机携号转网查询,一键查看号码是否可转网!
  • (undone) xv6-labs-2020 补充 LAB lazy page allocation (Day11 xv6-2020 LAB5 懒分配)
  • 双ISP(双互联网服务提供商)
  • eNSP中路由器OSPF协议配置完整实验和命令解释
  • 在Unity AR应用中实现摄像头切换功能
  • STL?string!!!
  • 【Azure Redis】Redis导入备份文件(RDB)失败的原因
  • P56-P60 统一委托,关联游戏UI,UI动画,延迟血条
  • 【Qt4】Qt4中实现PDF预览
  • 香港云服务器在跨境电商的应用
  • 计算机硬件:AMD X670E与B650主板的PCIe通道分配
  • tinyrenderer笔记(法线映射)
  • Nginx安全防护与HTTPS部署实战
  • STM32--GPIO
  • 【MCP Node.js SDK 全栈进阶指南】专家篇(2):MCP多模型支持架构
  • 破解工业3D可视化困局,HOOPS Visualize助力高效跨平台协作与交互!
  • 免费轻量化办公pdf修改软件 一键格式转换基础修改到高级加密
  • React Native【详解】搭建开发环境,创建项目,启动项目