mac下安装 rabbitmq 及 rabbitmq知识点

rabbitmq基本原理:

https://blog.csdn.net/yingfeng612/article/details/80150592

安装过程:

https://blog.csdn.net/u010046908/article/details/54773323

https://blog.csdn.net/u010442302/article/details/73189152

添加用户:

https://blog.csdn.net/kk185800961/article/details/55214474

学习流程:

https://blog.csdn.net/lmj623565791/article/details/37607165

 

知识点总结:

0.是否开启自动应答:

boolean ack = false ; //打开应答机制

channel.basicConsume(QUEUE_NAME, ack, consumer);

//另外需要在每次处理完成一个消息后,手动发送一次应答。

channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);

1.队列持久化的声明:boolean durable = true;

这样,当RabbitMQ退出或者异常退出,我们将不会丢失所有的队列和信息。

RabbitMQ不允许使用不同的参数重新定义一个队列,所以已经存在的队列,我们无法修改其属性。

如果不设置持久化,那么重启rabbitmq之后,消息队列将全部丢失。

2.分发消息的方式round-robin:

RabbitMQ会一个一个的发送信息给下一个消费者(consumer),而不考虑每个任务的时长等等,且是一次性分配,并非一个一个分配。平均的每个消费者将会获得相等数量的消息。

3.公平转发(Fair dispatch):

目前的消息转发机制(Round-robin)并非是我们想要的。例如,这样一种情况,对于两个消费者,有一系列的任务,奇数任务特别耗时,而偶数任务却很轻松,这样造成一个消费者一直繁忙,另一个消费者却很快执行完任务后等待。

为了解决这样的问题,我们可以使用basicQos方法,传递参数为prefetchCount=1。

这样告诉RabbitMQ不要在同一时间给一个消费者超过一条消息。换句话说,只有在消费者空闲的时候会发送下一条信息。

当消费者不忙时进行转发。且这种模式下支持动态增加消费者,因为消息并没有发送出去,动态增加了消费者马上投入工作。而默认的转发机制会造成,即使动态增加了消费者,此时的消息已经分配完毕,无法立即加入工作,即使有很多未完成的任务。

4.没有设置消息处理时长,如何控制一个进程kill掉之后,它上面正在处理的消息会进入其他进程,是因为rabbitmq可以监控到连接断开吗?

答:这种机制并没有超时时间这么一说,RabbitMQ只有在消费者连接断开时重新转发此信息。如果消费者处理一个信息需要耗费特别特别长的时间是允许的。

消息应答默认是打开的。

5.RabbitMQ消息模型的核心理念是生产者永远不会直接发送任何消息给队列,一般的情况生产者甚至不知道消息应该发送到哪些队列。

相反的,生产者只能发送消息给转发器(Exchange)。转发器是非常简单的,一边接收从生产者发来的消息,另一边把消息推送到队列中。转发器必须清楚的知道消息如何处理它收到的每一条消息。是否应该追加到一个指定的队列?是否应该追加到多个队列?或者是否应该丢弃?这些规则通过转发器的类型进行定义。

下面列出一些可用的转发器类型:

Direct

Topic

Headers

Fanout

Fanout是广播式的,广播式也是实时的,过时之后再打开消费者是无法收到消息的。广播式类似于观察者模式(订阅消息);

且这种方式是不存在rounting key的,对列直接绑定到Exchange上。

 

Direct类型的转发器背后的路由转发算法很简单:消息会被推送至绑定键(binding key)和消息发布附带的选择键(routing key)完全匹配的队列。

也可以进行多重绑定,如下,一个相同的Exchange 和 routing key,发送到不同的队列,但是接收到的信息是一样的。

 

使用一个绑定键(binding key)绑定多个队列是完全合法的。如上图,一个附带选择键(routing key)的消息将会被转发到Q1和Q2。

 

主题转发(Topic Exchange)

发往主题类型的转发器的消息不能随意的设置选择键(routing_key),必须是由点隔开的一系列的标识符组成,

一个附带特殊的选择键将会被转发到绑定键与之匹配的队列中。

关于绑定键有两种特殊的情况:

*可以匹配一个标识符。

#可以匹配0个或多个标识符。

主题类型的转发器非常强大,可以实现其他类型的转发器。

当一个队列与绑定键#绑定,将会收到所有的消息,类似fanout类型转发器。

当绑定键中不包含任何#与*时,类似direct类型转发器。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一些关于在Windows下安装RabbitMQ服务器及基本配置的步骤。 1. 下载Erlang RabbitMQ是基于Erlang编写的,因此需要先安装Erlang。可以从Erlang官网(https://www.erlang.org/downloads)下载合适的版本并安装。 2. 下载RabbitMQ 可以从RabbitMQ官网(https://www.rabbitmq.com/download.html)下载Windows安装包并安装。 3. 配置环境变量 将RabbitMQ的bin目录添加到系统的环境变量中,以便在任何位置都可以使用RabbitMQ命令。 4. 启动服务 在命令行中执行以下命令来启动RabbitMQ服务: ``` rabbitmq-server.bat start ``` 5. 测试连接 在浏览器中访问http://localhost:15672/,输入默认的用户名和密码(guest/guest),如果可以正常访问,则说明RabbitMQ已经成功安装并运行。 6. 创建用户和虚拟主机 为了安全起见,建议创建新的用户和虚拟主机。可以使用以下命令创建新的用户和虚拟主机: ``` rabbitmqctl.bat add_user username password rabbitmqctl.bat add_vhost vhostname rabbitmqctl.bat set_permissions -p vhostname username ".*" ".*" ".*" ``` 其中,username和password是你要创建的新用户的用户名和密码,vhostname是你要创建的新虚拟主机的名称。 7. 配置防火墙 如果你的Windows系统上启用了防火墙,需要开放RabbitMQ的端口。默认情况下,RabbitMQ使用的端口号是5672和15672。 以上就是在Windows下安装RabbitMQ服务器及基本配置的步骤,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值