rabbitmq作为消息队列,在实际应用中很常见,生产者将消息发送到某个队列,消费者消费这个队列。
消息在队列中,消费者要消费,需要监听队列,简单的来说,就是注册一个方法到消息通道,这个方法就会在有消息的时候执行。
下面通过java来操作rabbitmq,给出代码示例。
这里介绍三种消费者示例方法
1、最简单的注册。
直接通过channel.basicConsume()设置callback。
2、模拟一个队列消费者,启动线程。
自定义一个消费者,并且将消费者当做一个线程启动。
以上只需要amqp-client依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.4.3</version>
</dependency>
3、利用springboot对amqp的支持,通过自定义MessageListener然后,绑定到Container。
这是最常见的做法,自定义监听器,设置消息处理方法。将监听器注入消息监听容器,最后启动容器。
这里需要加入spring-boot-starter-amqp依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
下面给出以上介绍的三种消费者示例代码:
1、这个做法比较原始,也是最容易看懂的。
package com.xxx.huali.hualitest.amqp;
import java.io.IOException;
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;
import com.rabbitmq.client.AMQP.BasicProperties;
public class SimpleConsumer {
private static final String host = "192.168.226.100";
private static final String username = "huali";
private static final String password = "huali";
private static final String queue_name1 = "activate";
private static final String