Spring Cloud_27_消息驱动/RabbitMQ的使用
转载自 版权声明:本文为博主原创文章,艾特米工作室,欢迎转载 https://blog.csdn.net/zhaozao5757/article/details/79693670
消息驱动/RabbitMQ的使用
1、RabbitMQ服务器安装
这一章所使用的RibbitMQ的服务器版本是3.6.11(Windows版本),RibbitMQ的服务器要使用Erlang语言,所以需要先下载Erlang(20.4 64bit)
1.1、安装Erlang
- Erlang
- 傻瓜式安装
1.2、安装RabbitMQ-Server
- 消息代理中间件
- 傻瓜式安装
- 安装完成后,管理器中能看到服务
1.3、查看插件
- 进入rabbitmq的sbin目录下,按下shift键,鼠标右键
- 查看插件:rabbitmq-plugins list
1.4、开启插件
- 开启管理插件 :rabbitmq-plugins enable rabbitmq_management
1.5、访问RabbitMQ
- 帐号密码均为:guest
- 浏览器访问http://localhost:15672
2、消息生产者
- 消息的生产者/消费者都属于客户端,均使用AMQP协议与RabbitMQ服务器进行通信
- 向本机安装的RabbitMQ服务器发送消息
- 新建Maven项目:atm_rabbitMq_producer
2.1、引入依赖
<!-- AMQP -->
<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>4.2.0</version>
</dependency>
<!-- SLF4J日志 -->
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.9</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
2.2、main测试
- http://www.rabbitmq.com/documentation.html
- http://www.rabbitmq.com/api-guide.html
package com.atm.cloud;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;public class SendMessage {public static void main(String[] args) throws Exception {/** 1.生产者会发送消息给RabbitMQ服务器。 2.通过渠道叫消息发送给交换器。 3.交换器会发送给队列。 4.队列将消息发送给消费者。*/// 建立连接工厂ConnectionFactory factory = new ConnectionFactory();// 设置host,其实无需设置,默认为localhost,用户名/密码默认guest,端口默认5671// factory.setHost("localhost");// 创建新的连接Connection connection = factory.newConnection();// 通过连接创建渠道(向该渠道发送消息)Channel channel = connection.createChannel();// 声明交换器(默认绑定),交换器会将消息发送给队列,对列再发送给消费者// 直接声明队列,使用默认交换器String queueName = "MyQueueName";channel.queueDeclare(queueName, false, false, false, null);// 创建消息,使用渠道发布消息,""使用默认交换器,本列子中routingKey就使用queueNameString messageBody = "Hello Wrold!";channel.basicPublish("", queueName, null, messageBody.getBytes());// 发送之后,关闭渠道等(先关渠道,再关连接)channel.close();connection.close();}}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
3、消息消费者
- 读取刚刚的队列消息
package com.atm.cloud;import java.io.IOException;import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;public class ReadMessage {public static void main(String[] args) throws Exception {// 建立连接工厂ConnectionFactory factory = new ConnectionFactory();// 创建新的连接Connection connection = factory.newConnection();Channel channel = connection.createChannel();String queueName = "MyQueueName";channel.queueDeclare(queueName, false, false, false, null);// 通过队列创建ConsumerConsumer consumer = new DefaultConsumer(channel) {@Overridepublic void handleDelivery(String consumerTag, Envelope envelope,BasicProperties properties, byte[] body) throws IOException {String msg = new String(body, "UTF-8");System.out.println("接收到的消息:" + msg);}};// 渠道绑定consumerchannel.basicConsume(queueName, consumer);}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 程序是一直处于阻塞状态,连接着渠道去接收消息
- 目前只需要了解大概流程,以后结合SpringCloud适合,就简单很多了
4、交换器、绑定与队列
- 消息发送过来,消息自身带着一个routingKey,交换器根据该key进行队列的绑定
4.1、交换器
- direct:根据生产者传过来的routingKey是否等于bindingkey,来决定将消息发送给哪个队列
- topic:根据传过来的routingkey是否匹配一定的表达式,来决定消息发送给哪个或者哪些队列
- fanout:将消息发送给交换器知道的全部队列,这种交换器会忽略掉设置的routingkey(广播机制)
- headers:根据消息的头消息,来决定将消息发送给哪些队列
Spring Cloud_27_消息驱动/RabbitMQ的使用相关推荐
- Spring Cloud消息驱动整合 1
Spring Cloud Stream 使用场景 消息驱动的微服务应用 目的 简化代码 统一抽象 主要概念 1.应用模型 2.Binder抽象 3.持久化 发布/订阅支持 4.消费分组支持 5.分区支 ...
- Spring Cloud构建微服务架构:消息驱动的微服务(入门)【Dalston版】
之前在写Spring Boot基础教程的时候写过一篇<Spring Boot中使用RabbitMQ>.在该文中,我们通过简单的配置和注解就能实现向RabbitMQ中生产和消费消息.实际上我 ...
- Spring Cloud构建微服务架构:消息驱动的微服务(核心概念)【Dalston版】
通过<Spring Cloud构建微服务架构:消息驱动的微服务(入门)>一文,相信大家对Spring Cloud Stream的工作模式已经有了一些基础概念,比如:输入.输出通道的绑定,通 ...
- (十七)Java springcloud B2B2C o2o多用户商城 springcloud架构-消息驱动 Spring Cloud Stream...
在使用spring cloud云架构的时候,我们不得不使用Spring cloud Stream,因为消息中间件的使用在项目中无处不在,我们公司后面做了娱乐方面的APP,在使用spring cloud ...
- java B2B2C Springboot多租户电子商城系统-Spring Cloud Stream(消息驱动)
1.什么是Spring Cloud Stream 愿意了解源码的朋友直接企鹅求求:二一四七七七五六三三 Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架.它可以基于 ...
- Spring Cloud架构教程 (六)消息驱动的微服务【Dalston版】
Spring Cloud Stream是一个用来为微服务应用构建消息驱动能力的框架.它可以基于Spring Boot来创建独立的.可用于生产的Spring应用程序.它通过使用Spring Integr ...
- SpringCloud第九章(消息驱动Strem和RabbitMQ)
目录 1:什么是Strem 2:Strem架构 2.1:传统的消息对列架构 2.2:strem的消息对列架构 3:案例介绍 3.1:8001生产者 3.2:8002.8003消费者配置一致 4:总结消 ...
- 【Java开发】Spring Cloud 10 :Stream消息驱动
官方定义Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架.它为一些供应商的消息中间件产品提供了个性化的自动化配置实现,Spirng Cloud Stream 本质上 ...
- SpringCloud学习笔记 - 消息驱动 - Spring Cloud Stream
1. stream为什么被引入 常见MQ(消息中间件): ActiveMQ RabbitMQ RocketMQ Kafka 有没有一种新的技术诞生,让我们不再关注具体MQ的细节,我们只需要用一种适配绑 ...
最新文章
- Response.Write()方法响应导致页面内容变形的问题
- P6295-有标号 DAG 计数【多项式求逆,多项式ln】
- mongodb存储数据_在MongoDB中存储分层数据
- 深入理解Netscaler INat
- 局部加权线性回归(Locally weighted linear regression)
- C#实现AES加密和解密
- [Contest20180418]物理竞赛
- Linux不能识别usbasp,USBasp制作资料及全过程(菜鸟版)
- CPU的内部架构和工作原理(简介)
- 软件测试适不适合女生来做?女生做软件测试有哪些好处?
- golang-亚马逊s3上传图片文件
- SQL基础编程——介绍及基本语法了解
- 巫师编程语言“咒语” 设想
- 智慧工厂三维可视化决策系统平台(数字孪生)-解决方案开发案例
- 美团外卖红包,商超生鲜红包,饿了么红包天天领,果蔬抢特价,大额满减券,返利优惠券源代码
- TIC12400相关配置-笔记
- [置顶] VMWare不能安装64位操作系统原因探析
- 关于turtlebot仿真报错The majority of dropped messages were due to..... 修改记录
- VScode必备插件大全
- 美国中学生学计算机,我了解的一些美国学校和计算机(zz)