rabbitmq笔记

打印 上一主题 下一主题

主题 903|帖子 903|积分 2709

一、消息队列

1、消息队列的作用

可以异步处理请求

同步处理的缺点:


  • 系统耦合度高
  • 并发压力持续向后续服务传导
  • 系统布局缺乏弹性,可扩展性差
  • 响应时间长
异步处理的利益


  • 参与的各功能模块相对独立,耦合度低
  • 借助消息队列实现流量削峰填谷
  • 各功能模块对接消息队列,系统功能扩展方便
  • 快速响应
注意:并不是把全部交互方式都改成异步 ,强关联调用还是通过OpenFeign进行 同步调用,弱关联、可独立拆分出来的功能利用消息队列进行异步调用
2、rabbitmq概述


建立TCP连接必要三次握手,反复确认。 所以如果每一次访问RabbitMQ服务器都建立一个Connection开销会极大,效率低下。 所以Channel就是在一个已经建立的Connection中建立的逻辑连接。 如果应用步伐支持多线程,那么每个线程创建一个单独的Channel进行通讯。 每个Channel都有自己的id,Channel之间是完全隔离的。
二、原生方式操作RabbitMQ

生产者
  1. public class Producer {
  2.      
  3.   
  4.     public static void main(String[] args) throws Exception {
  5.      
  6.   
  7.         // 创建连接工厂  
  8.         ConnectionFactory connectionFactory = new ConnectionFactory();  
  9.   
  10.         // 设置主机地址  
  11.         connectionFactory.setHost("192.168.200.100");  
  12.   
  13.         // 设置连接端口号:默认为 5672
  14.         connectionFactory.setPort(5672);
  15.   
  16.         // 虚拟主机名称:默认为 /
  17.         connectionFactory.setVirtualHost("/");
  18.   
  19.         // 设置连接用户名;默认为guest  
  20.         connectionFactory.setUsername("guest");
  21.   
  22.         // 设置连接密码;默认为guest  
  23.         connectionFactory.setPassword("123456");
  24.   
  25.         // 创建连接  
  26.         Connection connection = connectionFactory.newConnection();  
  27.   
  28.         // 创建频道  
  29.         Channel channel = connection.createChannel();  
  30.   
  31.         // 声明(创建)队列  
  32.         // queue      参数1:队列名称  
  33.         // durable    参数2:是否定义持久化队列,当 MQ 重启之后还在  
  34.         // exclusive  参数3:是否独占本次连接。若独占,只能有一个消费者监听这个队列且 Connection 关闭时删除这个队列  
  35.         // autoDelete 参数4:是否在不使用的时候自动删除队列,也就是在没有Consumer时自动删除  
  36.         // arguments  参数5:队列其它参数  
  37.         channel.queueDeclare("simple_queue", true, false, false, null);  
  38.   
  39.         // 要发送的信息  
  40.         String message = "你好;小兔子!";  
  41.   
  42.         // 参数1:交换机名称,如果没有指定则使用默认Default Exchange  
  43.         // 参数2:路由key,简单模式可以传递队列名称  
  44.         // 参数3:配置信息  
  45.         // 参数4:消息内容  
  46.         channel.basicPublish("", "simple_queue", null, message.getBytes());  
  47.   
  48.         System.out.println("已发送消息:" + message);  
  49.   
  50.         // 关闭资源  
  51.         channel.close();  
  52.         connection.close();  
  53.   
  54.     }  
  55.   
  56. }
复制代码
消费者
  1. public class Consumer {
  2.      
  3.   
  4.     public static void main(String[] args) throws Exception {
  5.      
  6.   
  7.         // 1.创建连接工厂  
  8.         ConnectionFactory factory = new ConnectionFactory();  
  9.   
  10.         // 2. 设置参数  
  11.         factory.setHost
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

知者何南

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表