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

43.MQ—RabbitMQ

目录

一、MQ—RabbitMQ。

(1)同步调用与异步调用。

(1.1)同步调用。

(1.2)异步调用。

(2)MQ之间的区别。

(3)RabbitMQ学习。

(3.1)docker下载rabbitmq容器,并启动。

(3.2)RabbitMQ中的几个概念。

(3.3)常见消息模型。

(3.4)常见消息模型学习。

(3.4.1)基础消息队列(代码实现)。

(3.4.2)基础消息队列(RabbitTemplate模板实现)。

(3.4.3)work Queue工作队列。

(3.4.4)发布订阅-Fanout Exchange。

(3.4.5)发布订阅-DirectExchange。

(3.4.6)发布订阅-TopicExchange。

(3.5)消息转换器。


一、MQ—RabbitMQ。

(1)同步调用与异步调用。

(1.1)同步调用。

(1.2)异步调用。

(2)MQ之间的区别。

(3)RabbitMQ学习。

(3.1)docker下载rabbitmq容器,并启动。

下载容器: 

docker pull rabbitmq:3-management

启动容器:

docker run \-e RABBITMQ_DEFAULT_USER=itcast \-e RABBITMQ_DEFAULT_PASS=123321 \--name mq \--hostname mq1 \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq:3-management

浏览器访问:

(3.2)RabbitMQ中的几个概念。

(3.3)常见消息模型。

(3.4)常见消息模型学习。

提示:AMQP是协议,SpringAMQP是基于AMQP实现的一套API。 

(3.4.1)基础消息队列(代码实现)。

消息发送:

public class PublisherTest {@Testpublic void testSendMessage() throws IOException, TimeoutException {// 1.建立连接ConnectionFactory factory = new ConnectionFactory();// 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码factory.setHost("192.168.150.101");factory.setPort(5672);factory.setVirtualHost("/");factory.setUsername("itcast");factory.setPassword("123321");// 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();}
}

消息接收:

public class ConsumerTest {public static void main(String[] args) throws IOException, TimeoutException {// 1.建立连接ConnectionFactory factory = new ConnectionFactory();// 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码factory.setHost("192.168.150.101");factory.setPort(5672);factory.setVirtualHost("/");factory.setUsername("itcast");factory.setPassword("123321");// 1.2.建立连接Connection connection = factory.newConnection();// 2.创建通道ChannelChannel channel = connection.createChannel()// 3.创建队列String queueName = "simple.queue";channel.queueDeclare(queueName, false, false, false, null);// 4.订阅消息channel.basicConsume(queueName, true, new DefaultConsumer(channel){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope,AMQP.BasicProperties properties, byte[] body) throws IOException {// 5.处理消息String message = new String(body);System.out.println("接收到消息:【" + message + "】");}});System.out.println("等待接收消息。。。。");}
}

(3.4.2)基础消息队列(RabbitTemplate模板实现)。

(3.4.3)work Queue工作队列。

与simple的区别:多了一个设置消费预存限制。

(3.4.4)发布订阅-Fanout Exchange。

提示:绑定键使用空字符串,就可以完成广播(发给所有绑定该交换机的队列)。 

(3.4.5)发布订阅-DirectExchange。

提示:需要提供绑定键(路由键),根据  交换机+绑定键  映射。 

(3.4.6)发布订阅-TopicExchange。

(3.5)消息转换器。

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

相关文章:

  • Leetcode154. 寻找旋转排序数组中的最小值(存在重复元素)
  • docker查看镜像的latest对应的具体版本
  • RabbitMQ深入 —— 死信队列
  • 【React + Umi】自定义离开页面拦截弹框事件
  • S1FD40A180H-ASEMI快恢复二极管S1FD40A180H
  • 网络编程 day1
  • 《深入PostgreSQL的存储引擎:原理与性能》
  • python开发之个微群聊机器人的开发
  • 【Redis7】--4.事务、管道、发布和订阅
  • 【Vue】el 和 data短小精湛的细节!
  • 前端screenfull实现界面全屏展示功能
  • Dockerfile 制作常用命令总结
  • uniapp项目实践总结(十七)实现滚动触底加载
  • SAP入门到放弃系列之QM质量检验流程概述
  • Ansys Zemax | 光学系统设计中如何使用玻璃替换方法来优化玻璃
  • springboot基础--实现默认登录页面
  • TDesign WXS语法
  • Iterator设计模式
  • ROS 入门
  • 第四章 Linux网络编程
  • 无涯教程-JavaScript - OFFSET函数
  • rust切片
  • 2023/9/18 -- C++/QT
  • vue柱状图+折线图组合
  • js中如何实现一个简单的防抖函数?
  • mysq 主从同步错误之 Error_code 1032 handler error HA_ERR_KEY_NOT_FOUND
  • 蓝桥杯 题库 简单 每日十题 day4
  • l8-d21 域名解析与http服务器实现原理
  • 网络安全(黑客技术)自学规划
  • 阻止用邮件不停注册wordpress账户的方法