消息中间件RabbitMQ系列,直连模式,实现利用代码从队列里面取出数据(四)

本文介绍如何使用Java代码从RabbitMQ队列中消费消息,包括建立连接、创建通道及消息消费过程,并解释了消费者与生产者的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前已经利用代码,将一些数据放到了队列里面,现在我们要实现利用代码从队列里面拿出数据。

在这里插入图片描述

在这里插入图片描述

public class Customer {

    public static void main(String[] args) throws IOException, TimeoutException {
        //        创建连接mq的连接工厂对象,这个是依赖里面的类,我们只需要拿过来创建对象就可以了
        ConnectionFactory connectionFactory = new ConnectionFactory();
//        设置连接rabbitmq的ip
        connectionFactory.setHost("192.168.40.145");
//        设置端口号
        connectionFactory.setPort(5672);
//        设置连接的虚拟的主机
        connectionFactory.setVirtualHost("/ems");
//        设置访问虚拟主机的用户名和密码
        connectionFactory.setUsername("ems");
        connectionFactory.setPassword("123");
//        获取连接对象
        Connection connection = connectionFactory.newConnection();
//        创建通道
        Channel channel = connection.createChannel();
//        让通道和消息队列进行绑定
        channel.queueDeclare("hello",false,false,false,null);

        channel.basicConsume("hello",true,new DefaultConsumer(channel){

            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("new String(body)"+new String(body));
            }
        });

    }
}

在这里插入图片描述

记住,发送者是在测试类里面可以发送,但是接受者必须在main函数,也就是主函数里面,因为接受端有一个回调函数,要执行回调函数里面的代码,这样就变为多线程,在主函数里面,就会执行这个回调函数,在测试类里面不会,因为测试类里面执行完主的就结束了,没有时间执行回调函数。

获取完成之后,我们看队列里面的信息

在这里插入图片描述
队列里面就没有东西了,因为被消费端消费了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一写代码就开心

你的打赏将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值