rabbitmq消费者与生产者

本文介绍了如何在Java中使用RabbitMQ的AMQP客户端创建生产者和消费者。首先添加必要的依赖,然后配置连接工厂,包括IP、端口、虚拟主机、用户名和密码。生产者创建队列并发送消息,消费者接收并处理消息。注意需确保服务器的5672和15672端口开放。

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

在第一次学习rabbitmq的时候,遇到了许多不懂得

第一步导包

<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.14.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>

第二步新增生产者

public class Producer {
    //队列名称
    public static final String QUEUE_NAME="hello";
    //发消息
    public static void main(String[] args) throws Exception {
        //创建一个连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //工厂的ip连接RabbitMQ队列
        connectionFactory.setHost("110.12.247.134");
        //端口号
        connectionFactory.setPort(5672);
        connectionFactory.setVirtualHost("my_vhost");  //填写自己
        //用户名  填写自己的
        connectionFactory.setUsername("admin");
        //密码   填写自己的
        connectionFactory.setPassword("admin");
        Connection connection = connectionFactory.newConnection();
        System.out.println(connection);
        //获取信道
        Channel channel = connection.createChannel();
        /*生成一个队列
        * 1.队列的名称
        * 2.队列里面的消息是否持久化(磁盘) 默认情况下消息存储在内存当中
        * 3.该队列是否只供一个消费者进行消费,是否进行消费共享,false只能供一个消费者,true提供给所有消费者
        * 4.是否自动删除  最后一个消费者断开连接以后 该队列是否自动删除 true自动删除 false 不自动删除
        * 5.其他参数
        * */
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);
        //发消息
        String message="Hello World";
        /**发送一个消费
         * 1.发送到那个交换机
         * 2.路由的key值是哪个  本次是队列的名称
         * 3.其他参数信息
         * 4.发送消息的消息体
         * */
        channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
        System.out.println("消息发送完毕");
    }
}

在这里中:

connectionFactory.setVirtualHost("my_vhost");//填写自己的队列名称,如果你的为”/“则填写''/''

第三步新增消费者

public class Consumer {
    //队列名称
    public static final String QUEUE_NAME="hello";

    public static void main(String[] args) throws Exception {
        //创建一个连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //工厂的ip连接RabbitMQ队列
        connectionFactory.setHost("110.42.247.134");
        //端口号
        connectionFactory.setPort(5672);
        connectionFactory.setVirtualHost("my_vhost");
        //用户名
        connectionFactory.setUsername("admin");
        //密码
        connectionFactory.setPassword("admin");
        Connection connection = connectionFactory.newConnection();
        //获取信道
        Channel channel = connection.createChannel();
        //声明  接受消息
        DeliverCallback deliverCallback=(consumerTag,messagee) -> {
            System.out.println(new String(messagee.getBody()));
        };
        //取消消息时的回调
        CancelCallback cancelCallback=(message)->{
            System.out.println("消费消息被中断");
        };
        //消费者接受消息
        /*消费者消费消息
        *1.消费那个队列
        * 2.消费成功后是否要自动应答 true 代表的是自动应答  false代表的是手动应答
        * 3.消费者未成功消费的回调
        * 4.消费者取消消费的回调
        * */
        channel.basicConsume(QUEUE_NAME,true, deliverCallback, cancelCallback);
    }
}

消息获取成功

注意如果你用的云服务器需要打开这两个端口 5672 15672

如果你使用的虚拟机则你需要关闭防火墙

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值