RabbitMQ学习

1 RabbitMQ相关概念介绍

1.1 组件介绍

RabbitMQ中主要包含生产者(producer)、消费者(consumer)、消息中间件服务节点(Broker)。

模型如下图所示:
在这里插入图片描述

​ 图1.1 RabbitMQ的模型架构
生产者,就是投递消息的一方。生产者创建消息,然后发布到RabbitMQ 中。

消费者, 就是接收消息的一方。消费者连接到RabbitMQ 服务器,并订阅到队列上。

Broker, 消息中间件的服务节点。

Queue: 队列,是RabbitMQ 的内部对象,用于存储消息。

1.2 交换器、路由键、绑定

交换器(Exchange):

生产者将消息发送到Exchange (交换器,通常也可以用大写的"X" 来表示),由交换器将消息路由到一个或者多个队列中。如果路由不到,或许会返回给生产者,或许直接丢弃。如图1.1所所示的从生产者—交换机—队列的路线。

路由键(RoutingKey):

生产者将消息发给交换器的时候, 一般会指定一个RoutingKey ,用
来指定这个消息的路由规则,而这个RoutingKey 需要与交换器类型和绑定键(BindingKey) 联
合使用才能最终生效。

绑定(Binding)

RabbitMQ 中通过绑定将交换器与队列关联起来,在绑定的时候一般会指定一个绑定键( BindingKey ) ,这样RabbitMQ 就知道如何正确地将消息路由到队列了。生产者将消息发送给交换器时, 需要一个RoutingKey , 当BindingKey 和RoutingKey 相匹配时, 消息会被路由到对应的队列中。BindingKey 并不是在所有的情况下都生效,它依赖于交换器类型, 比如fanout 类型的交换器就会无视BindingKey , 而是将消息路由到所有绑定到该交换器的队列中。

1.3 交换器类型

RabbitMQ 常用的交换器有fanout 、direct、topic 、headers 这四种类型。

fanout:它会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。
在这里插入图片描述

​ 图1.2 fanout交换器

channel.basicPublish(EXCHANGE_NAME,“”, null, message.getBytes()); 路由键此时无作用。消息会被发送到与交换器绑定的所有队列中。

direct:会把消息路由到那些BindingKey 和RoutingKey完全匹配的队列中。
在这里插入图片描述

​ 图1.3 direct交换器

交换器的类型为direct,如果我们发送一条消息,并在发送消息的时候设置路由键为" error" ,则消息会路由Queue1和Queue2 中,对应的示例代码为:

channel.basicPublish(EXCHANGE_NAME, “warning” ,message.getBytes()) ;

如果在发送消息的时候设置路由键为" info" 或者"warning" ,消息只会路由到Queue2 。

topic:与direct 类型的交换器相似,也是将消息路由到BindingKey 和RoutingKey 相匹配的队列中,但这里的匹配规则有些不同,它约定:
(1)RoutingKey 为一个点号". “分隔的字符串(被点号”. “分隔开的每一段独立的字符串称为一个单词),如"com.rabbitmq.client”
(2)BindingKey 和RoutingKey 一样也是点号" .“分隔的字符串;
(3)BindingKey 中可以存在两种特殊字符串”*“和”#“,用于做模糊匹配,其中”**“用于匹配一个单词,”#"用于匹配多规格单词(可以是零个)。
在这里插入图片描述

​ 图1.3 topic交换器

如图1.3所示:

com.orange.lala会匹配到队列1中;com.orange.rabbit会匹配到队列1和队列2中。

2 RabbitMQ安装与配置

2.1 安装包下载

由于RabbitMQ是用Erlang语言编写的,因此需要先安装Erlang:http://www.erlang.org/downloads

RabbitMQ下载路径:http://www.rabbitmq.com/install-windows-manual.html

安装包展示:
在这里插入图片描述

2.2 RabbitMQ安装
2.2.1 Erlang安装

1、双击应用程序进行安装,一路默认选择(直接选择Next)直至安装成功。
在这里插入图片描述

2、增加环境变量ERLANG_HOME=D:\JavaSoftware\rabbitmq\erl10.4(选择自己的安装目录)

3、修改环境变量Path,在原来的值后面加上“%ERLANG_HOME%\bin”

2.2.2 RabbitMQ安装

1、使用默认配置,一路点击Next直至安装完成。

在这里插入图片描述

2、增加环境变量RABBITMQ_HOEM=D:\JavaSoftware\rabbitmq\rabbitmq-server-3.7.17\rabbitmq_server-3.7.17

3、修改环境变量Path,在原来的值后面加上“%RABBITMQ_HOEM%\sbin”

2.3 启动管理页面

1、运行命令rabbitmq-plugins enable rabbitmq_management 开启Web管理插件
在这里插入图片描述

2、通过浏览器访问http://localhost:15672,并通过默认用户guest进行登录,密码也是guest,登录后的页面:
在这里插入图片描述

3 客户端开发

3.1 RabbitMQ连接
<rabbit:connection-factory id="connectionFactory" host="127.0.0.1"
                               port="5672" username="admin" password="lj..0000"
                                virtual-host="host"/>
AbstractApplicationContext context =
                new ClassPathXmlApplicationContext("classpath:rabbitmq-context.xml");

3.2 交换器和队列
3.2.1 exchangeDeclare方法
Exchange.DeclareOk exchangeDeclare(String exchange ,String type , boolean durable,
boolean autoDelete , boolean internal ,Map
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值