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

RabbitMQ消息模型之Sample

Hello World

Hello World是官网给出的第一个模型,使用的交换机类型是直连direct,也是默认的交换机类型。

image-20220526143501213

在上图的模型中,有以下概念:

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

此模型中只有一个生产者、一个队列、一个消费者。

这种模式适合于消息任务不是很密集,并且处理任务不算太过耗时的场景。消费者消费的速度赶得上生产者生产的速度。

创建生产者

public class MyProducer {@Testpublic void test() throws Exception {// 队列名称String queue = "xw_queue";String message = "Hello World -> ";// 创建工厂ConnectionFactory factory = new ConnectionFactory();factory.setVirtualHost("/");factory.setHost("xuewei.world");factory.setUsername("xuewei");factory.setPassword("123456");factory.setPort(5672);// 创建连接和通道Connection connection = factory.newConnection();Channel channel = connection.createChannel();for (int i = 0; i < 10; i++) {// 发布消息channel.basicPublish("xw_exchange", queue, null, (message + i).getBytes());}}
}

创建消费者

public class MyConsumer {public static void main(String[] args) throws Exception {// 队列名称String queue = "xw_queue";// 创建工厂ConnectionFactory factory = new ConnectionFactory();factory.setVirtualHost("/");factory.setHost("xuewei.world");factory.setUsername("xuewei");factory.setPassword("123456");factory.setPort(5672);// 创建连接和通道Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.queueDeclare(queue, true, false, false, null);channel.queueBind("", "xw_exchange", queue);channel.basicConsume(queue, true, new DefaultConsumer(channel) {@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("接收到消息: " + new String(body));// TODO 业务处理}});}
}

image-20220526154448671

http://www.lryc.cn/news/249487.html

相关文章:

  • 安全技术与防火墙
  • Windows系统搭建Appium 2 和 Appium Inspector 环境
  • 计算机应用基础_错题集_OutLook操作题_操作系统应用题_电子表格---网络教育统考工作笔记005
  • 2023-11-26 LeetCode每日一题(统计子串中的唯一字符)
  • HTML新手入门笔记整理:特殊符号
  • 物联网中基于信任的安全性调查研究:挑战与问题
  • tex2D使用学习
  • [iOS开发]UITableView的性能优化
  • 使用opencv实现图像滤波
  • Swagger在php和java项目中的应用
  • java科学计数法表示数值
  • 基于C#实现树状数组
  • Ubuntu Server 20.04.6下Anaconda3安装Pytorch
  • C#-关于日志的功能扩展
  • 小程序禁止二次转发分享私密消息动态消息
  • 普乐蛙绵阳科博会一场VR科普航天科学盛宴科普知识
  • FFNPEG编译脚本
  • Python期末复习题库(下)——“Python”
  • tauri中使用rust调用动态链接库例子(使用libloading库和libc库)
  • Leetcode—739.每日温度【中等】
  • 毕业设计单片机可以用万能板吗?
  • spring boot整合Jasypt实现配置加密
  • java学校高校运动会报名信息管理系统springboot+jsp
  • Java(七)(Lambda表达式,正则表达式,集合(Collection,Collection的遍历方式))
  • 华为OD机试 - 二叉树计算(Java JS Python C)
  • 鸿蒙(HarmonyOS)应用开发——基础组件
  • Vue3的项目创建到启动
  • 开关电源基础而又硬核的知识
  • LightDB23.4 支持转换sql中中文空格和逗号为英文空格和逗号
  • EM@常见平面曲线的方程的不同表示方式