RabbitMq基础概念、常用交换机、Linux安装

1.RabbitMq的基础概念

  1.  publisher:生产者,用于生产消息。
  2. consumer: 消费者,用于消费消息。
  3. exchange:交换机,用于投递消息的。生产者将消息交给交换机,交换机讲消息放到队列。相当于邮局中邮递员。
  4. queue:队列,用于存放消息的地方。
  5. routIngKey: 路由键,生产者指定对应的路由键,该路由键决定将消息给哪个交换机。
  6. BindIng:将交换机和队列进行绑定。决定着交换机将消息放到哪个队列中。
  7. virtual host: 虚拟主机,表示一批交换机、队列以及相关对象的集合。虚拟主机是共享相同身份认证和加密数据的独立服务器域。每一个vhost就相当于一个独立rabbitMq服务器,拥有自己的交换机、队列、绑定和权限。默认是/.
  8. broker: 交换机、绑定、队列 组成的一个消息服务器实体。它相当于是虚拟主机的一个实例对象。
  9. channel: 信道,用于传递消息的通道。生产者和消费者生产和消费消息时,都是通过信道传输消息的。参考JavaNIO中信道的概念。
  10. connection:网络连接。比如一个tcp长连接。连接很耗时,所以一般生产者生产消息和消费者消费消息时都会保持一个长连接,然后创建多条信道进行传输消息。

2.RabbitMq的工作流程

工作流程:首先,生产者生产消息,将消息发送到指定的(使用routIngKey和交换机名称进行指定)交换机中。其次,交换机将消息发送到指定的(和交换机使用bindIngKey绑定的队列)队列中。最后,消费者监听指定的队列进行消费消息。

  • 消费者监听的队列只要有消息就会进行消费。
  • 生产者和消费者发送或者消费消息都会和RabbitMq服务器建立一条长连接。如果消费连接中断,服务器就会监控到,然后把消息进行存储起来。保证消息不丢失。

3.常用交换机

1.direct 精确匹配routIngKey和交换机,点对点的方式

  • 一个交换机可以绑定多个队列,如果routingkey 都不相同则是一对一 。如果路由键都相同则和fanout类型相同 

2.fanout 将消息发送到和交换机绑定的队列上,广播

  • 不需要指定routeKey,给所有该交换机绑定的队列发消息 routeKey设置为空串就行 发送的时候routeKey也是空串
3.topic 模糊匹配routIngKey 模式匹配

  • 模式匹配,给匹配的bindIngkey的队列发送指定的消息。
  • “#” : 匹配一个或者多个, “*”:匹配一
4.自定义交换机 延迟队列 原理 利用死信队列超时重新投递到队列

项目源码参考rabbitmq测试源码

4.Linux中安装

1.官网地址  https://www.rabbitmq.com/download.html

2.将下载的安装文件进行上传到服务器上

3.安装文件(分别按照以下顺序安装)

rpm -ivh erlang-21.3-1.el7.x86_64.rpm
yum install socat -y
rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm

4.常用命令(按照以下顺序执行)

添加开机启动 RabbitMQ 服务
chkconfig rabbitmq-server on
启动服务
/sbin/service rabbitmq-server start  或者 centos7以后版本 systemctl  start rabbitmq-server
查看服务状态
/sbin/service rabbitmq-server status 或者 systemctl  status rabbitmq-server

停止服务(选择执行)
/sbin/service rabbitmq-server stop 或者 systemctl  stop rabbitmq-server

开启 web 管理插件
rabbitmq-plugins enable rabbitmq_management

开启web管理插件后,用默认账号密码(guest)访问地址 http://47.115.185.244:15672/出现权限问题

解决方案

添加一个新的用户
创建账号
命令 rabbitmqctl add_user admin 123   备注 rabbitmqctl add_user admin (用户名) 123 (密码)  
设置用户角色
命令 rabbitmqctl set_user_tags admin administrator   备注   rabbitmqctl set_user_tags admin(用户名) administrator(角色名称)
设置用户权限

命令 rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

备注 set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
用户 user_admin 具有/vhost1 这个 virtual host 中所有资源的配置、写、读权限
列出当前用户和角色
rabbitmqctl list_users

重置命令
关闭应用的命令为  此应用指当前的rabbitmq服务器节点 默认只有一个节点
rabbitmqctl stop_app
清除的命令为  将rabbitmq中设置的用户数据重置

rabbitmqctl reset
重新启动命令为
rabbitmqctl start_app

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: RabbitMQ是一个基于AMQP协议的消息中间件,提供了丰富的Exchange交换机)类型来进行消息的路由和分发。其中,topic类型的交换机可以根据消息的routing key来进行灵活的匹配和分发。 在Spring Boot中使用RabbitMQ的topic类型交换机,首先需要在配置文件中配置RabbitMQ的连接信息,如主机地址、端口号、用户名、密码等。 其次,需要创建一个RabbitMQ的配置类,使用@Configuration注解进行标识,并使用@EnableRabbit注解启用RabbitMQ相关的配置。在配置类中,可以使用@Bean注解创建一个RabbitTemplate的实例,用于发送和接收消息。 接下来,在生产者中,可以使用@Autowired注解注入RabbitTemplate实例,并调用其convertAndSend方法发送消息到指定的交换机和routing key。生产者可以根据具体的业务需求设置不同的routing key,用于消息的匹配和分发。 在消费者中,同样可以使用@Autowired注解注入RabbitTemplate实例,并调用其receiveAndConvert方法接收消息。消费者需要在配置类中使用@RabbitListener注解,指定要监听的队列,并根据需要设置不同的routing key或通配符进行匹配。 通过Spring Boot中的自动配置,我们可以方便地使用RabbitMQ的topic类型交换机进行消息的发布和订阅。同时,使用Spring AMQP提供的注解和模板类,可以简化开发过程,提高代码的可读性和可维护性。 需要注意的是,使用topic类型交换机时,routing key是由一个或多个单词组成的字符串,用点号(.)进行分隔。其中,单词可以包含字母、数字或通配符(#和*)。#用于匹配零个或多个单词,*用于匹配一个单词。 总之,通过使用RabbitMQ的topic类型交换机和Spring Boot提供的自动配置和注解,我们可以方便地实现消息的灵活路由和分发,满足不同业务场景的需求。 ### 回答2: RabbitMQ是一个开源的消息中间件,用于实现可靠的消息传递。它使用AMQP(高级消息队列协议)作为消息传输协议,并通过交换机来路由消息。 Topic类型的交换机RabbitMQ中是一种灵活的交换机类型。它通过使用通配符的方式将消息路由到与匹配的路由键相关联的队列。使用Spring Boot框架与RabbitMQ集成,可以方便地实现Topic类型的交换机。 首先,在Spring Boot项目中引入RabbitMQ的依赖,例如: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> ``` 然后,配置RabbitMQ的连接信息,例如: ```yaml spring: rabbitmq: host: localhost port: 5672 username: guest password: guest ``` 接下来,在代码中创建一个Topic类型的交换机,例如: ```java @Configuration public class RabbitMQConfig { private static final String TOPIC_EXCHANGE_NAME = "topicExchange"; @Bean public TopicExchange topicExchange() { return new TopicExchange(TOPIC_EXCHANGE_NAME); } } ``` 然后,创建一个消费者来监听队列中的消息,例如: ```java @Component public class MessageListener { private static final String QUEUE_NAME = "messageQueue"; private static final String ROUTING_KEY = "message.*"; @RabbitListener(queues = QUEUE_NAME) public void handleMessage(String message) { System.out.println("Received message: " + message); } } ``` 最后,通过发送消息的方式来测试Topic类型的交换机,例如: ```java @Service public class MessageService { private static final String ROUTING_KEY = "message.test"; @Autowired private RabbitTemplate rabbitTemplate; public void sendMessage(String message) { rabbitTemplate.convertAndSend(TOPIC_EXCHANGE_NAME, ROUTING_KEY, message); } } ``` 以上是使用Spring Boot与RabbitMQ实现Topic类型交换机的基本步骤。通过配置交换机、监听队列和发送消息,可以实现灵活的消息路由机制,满足不同的业务需求。 ### 回答3: RabbitMQ是一种开源的消息代理,用于在分布式系统之间传递消息。它支持多种类型的交换机,其中之一就是Topic类型。 在使用Spring Boot集成RabbitMQ时,我们可以通过配置文件或代码的方式来定义Topic类型的交换机。 首先,在配置文件中我们需要定义RabbitMQ的连接信息,如主机名、端口号、用户名和密码等。同时,我们也需要配置交换机的相关信息,包括交换机名称、类型和持久化等。 例如,我们可以在application.properties文件中添加以下配置: spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest spring.rabbitmq.template.exchange=myExchange spring.rabbitmq.template.routing-key=myTopic 上述配置中,我们定义了RabbitMQ的连接信息和交换机的相关信息。其中,exchange为我们自定义的交换机名称,routing-key为我们自定义的Topic名称。 接下来,在代码中我们可以通过使用注解的方式,将RabbitTemplate对象注入到我们的业务逻辑中。然后,通过调用RabbitTemplate对象的convertAndSend方法来发送消息。 例如,我们可以通过以下方式来发送消息: @Autowired private RabbitTemplate rabbitTemplate; public void sendMessage(String message) { rabbitTemplate.convertAndSend("myExchange", "myTopic", message); } 上述代码中,我们通过调用rabbitTemplate对象的convertAndSend方法来发送消息。其中,第一个参数为交换机名称,第二个参数为Topic名称,第三个参数为要发送的消息内容。 总结一下,通过配置文件和代码的方式,我们可以在Spring Boot中使用RabbitMQ的Topic类型交换机。只需要定义好RabbitMQ的连接信息和交换机的相关信息,然后调用RabbitTemplate对象的convertAndSend方法来发送消息即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值