RabbitMQ进行简单的消息发送和消费

在完成该功能之前,需要在虚拟机上下载安装rabbitmq,并且通过网页可以访问到rabbitmq server,可以参考我的上篇文章linux上下载以及安装rabbitmq

1.不管使用什么组件,第一步都是导入相关依赖
	<dependencies>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
	</dependency>
    <dependency>
        <groupId>com.rabbitmq</groupId>
        <artifactId>amqp-client</artifactId>
        <version>5.12.0</version>
    </dependency>
</dependencies>

这里导入lombok依赖,是为了等下可以输出一些日志消息,如果不使用,可以不用导入相关依赖,不过为了方便后面调试,最好还是导入。

2.先写生产者(Producer)代码
@Slf4j
public class ExerciseP {
    public static String QUEUE_NAME = "hello_world";
    public static void main(String[] args) throws IOException, TimeoutException {
        //new a connectionFactory
        ConnectionFactory factory = new ConnectionFactory();
        //host address
        factory.setHost(You host address);
        //rabbitmq's username
        factory.setUsername(username);
        //rabbitmq's password
        factory.setPassword(password);
        //new connection
        Connection connection = factory.newConnection();
        //new channel
        Channel channel = connection.createChannel();
        //declare a queue
        channel.queueDeclare(QUEUE_NAME,true,false,false,null);
        String message = "hello world";
        //1st param exchange name
        //2nd routing key
        //3rd basicProperties
        //4th message (requires byte data)
        //publish a message
        channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
        log.info("消息发送成功!");
    }

在这里插入图片描述显示消息发送成功,同时在rabbitmq中也可以看到消息
在这里插入图片描述
显示确实发送了 一条消息到rabbitmq server中

3.消费者代码(Consumer)
@Slf4j
public class ExerciseC {
    public static final String QUEUE_NAME = "hello_world";

    public static void main(String[] args) throws IOException, TimeoutException {
        //新建一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //连接工厂设置主机,用户,密码,连接上rabbitmq  Server
        factory.setHost(You host address);
        factory.setUsername(username);
        factory.setPassword(password);
        //新建一个连接
        Connection connection = factory.newConnection();
        //新建一个信道
        Channel channel = connection.createChannel();

        //消息到达回调函数
        DeliverCallback deliverCallback = (consumerTag,message)->{
            log.info("消息已经接收到{}",new String(message.getBody(), StandardCharsets.UTF_8));
        };
        CancelCallback cancelCallback = (consumerTag)->{
          log.info("消息发送被中断!");
        };
        channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);

    }
}

在这里插入图片描述在这里插入图片描述

rabbitmq server显示队列中的消息被消费了,idea控制台中也打印出了相关消息。
到此为止,使用rabbitmq实现简单的消息发送和消费就完成了。

Logo

更多推荐