RabbitMQ使用

waitzkj 2020-07-05

1、工作队列
现在的程序只定义有一个生产者和一个消费者,如果说现在有一个生产者对应多个消费者呢?那就表示一个工作队列,而工作队列的最大特征在于:若干个消费者一起完成工作。

当启动了多个消费者之后,这些消费者会一起共同完成所发出的消息消费处理,这样的处理可以保证消息处理的速度更加的快速。但是千万要记住,此时使用的是普通队列消息。

所以队列消息之中的所有消费者会自动进行负载均衡设计。

2、消息持久化
在之前所创建的消息队列形式实际上都会发现有一个持久化的选项,所谓的持久化的本质在于:即便RabbitMQ服务停机之后,其未消费的消息也可以在重启之后进行消费处理。
2.1、观察临时消息处理,在RabbitMQ里面队列可以由用户在使用的时候创建,

public static final String QUEUE_NAME = "lynch.msg.queue.tmp";
channel.queueDeclare(ConnectionUtils.QUEUE_NAME, false, false, true, null);

这个时候如果服务器关闭了,并且有未消费的消息存在,则在重新启动之后,这些消息将会被清空,如果不想清空则要建立持久化消息。

2.1、建立持久性消息

public static final String QUEUE_NAME = "lynch.msg.queue.persistent";
channel.queueDeclare(ConnectionUtils.QUEUE_NAME, true, false, true, null);
//如果不编写MessageProperties.PERSISTENT_TEXT_PLAIN,则消息无法被持久化
channel.basicPublish("", ConnectionUtils.QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN,message.getBytes());

3、虚拟主机
虚拟主机可以理解为RabbitMQ中的重大特点,实际上在之前就已经存在有虚拟主机了。因为每一个rabbitmq如果没有配置则会默认一个虚拟主机的信息,当然,用户也会建立属于自己的虚拟主机,并且每一个虚拟主机里有自己的队列信息。

3.1、虚拟主机的配置最简单的做法就是直接在控制台上通过界面创建
RabbitMQ使用
如果你不想通过界面进行创建,那么也可以使用命令行的模式完成:rabbitmqctl.
cd D:\dev\RabbitMQ Server\rabbitmq_server-3.8.5\sbin\rabbitmqctl

3.2、那么随后如果要想在项目之中去使用虚拟主机,则要在链接处进行配置:

// vhost_lynch、/vhost_lynch为两个不同的虚拟主机
factory.setVirtualHost("/vhost_lynch");
factory.setUsername("lynch");
factory.setPassword("lynch");


使用虚拟主机最大好处可以区分不同用户的操作空间。

相关推荐