ToB企服应用市场:ToB评测及商务社交产业平台
标题:
rabbitmq笔记
[打印本页]
作者:
知者何南
时间:
2024-9-1 04:22
标题:
rabbitmq笔记
一、消息队列
1、消息队列的作用
可以异步处理请求
同步处理的缺点:
系统耦合度高
并发压力持续向后续服务传导
系统布局缺乏弹性,可扩展性差
响应时间长
异步处理的利益
参与的各功能模块相对独立,耦合度低
借助消息队列实现流量削峰填谷
各功能模块对接消息队列,系统功能扩展方便
快速响应
注意:并不是把全部交互方式都改成异步 ,强关联调用还是通过OpenFeign进行 同步调用,弱关联、可独立拆分出来的功能利用消息队列进行异步调用
2、rabbitmq概述
建立TCP连接必要三次握手,反复确认。 所以如果每一次访问RabbitMQ服务器都建立一个Connection开销会极大,效率低下。 所以Channel就是在一个已经建立的Connection中建立的逻辑连接。 如果应用步伐支持多线程,那么每个线程创建一个单独的Channel进行通讯。 每个Channel都有自己的id,Channel之间是完全隔离的。
二、原生方式操作RabbitMQ
生产者
public class Producer {
public static void main(String[] args) throws Exception {
// 创建连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
// 设置主机地址
connectionFactory.setHost("192.168.200.100");
// 设置连接端口号:默认为 5672
connectionFactory.setPort(5672);
// 虚拟主机名称:默认为 /
connectionFactory.setVirtualHost("/");
// 设置连接用户名;默认为guest
connectionFactory.setUsername("guest");
// 设置连接密码;默认为guest
connectionFactory.setPassword("123456");
// 创建连接
Connection connection = connectionFactory.newConnection();
// 创建频道
Channel channel = connection.createChannel();
// 声明(创建)队列
// queue 参数1:队列名称
// durable 参数2:是否定义持久化队列,当 MQ 重启之后还在
// exclusive 参数3:是否独占本次连接。若独占,只能有一个消费者监听这个队列且 Connection 关闭时删除这个队列
// autoDelete 参数4:是否在不使用的时候自动删除队列,也就是在没有Consumer时自动删除
// arguments 参数5:队列其它参数
channel.queueDeclare("simple_queue", true, false, false, null);
// 要发送的信息
String message = "你好;小兔子!";
// 参数1:交换机名称,如果没有指定则使用默认Default Exchange
// 参数2:路由key,简单模式可以传递队列名称
// 参数3:配置信息
// 参数4:消息内容
channel.basicPublish("", "simple_queue", null, message.getBytes());
System.out.println("已发送消息:" + message);
// 关闭资源
channel.close();
connection.close();
}
}
复制代码
消费者
public class Consumer {
public static void main(String[] args) throws Exception {
// 1.创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
// 2. 设置参数
factory.setHost
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4