RabbitMQ实战-JavaDemo

目录

前言

消息生产者

消息消费者

消息确认机制

消息持久化

Maven 依赖

总结


前言

在使用 RabbitMQ 进行消息传递时,了解如何在代码中创建和发布消息(生产者)、接收和处理消息(消费者),以及配置消息确认机制和持久化,是确保系统可靠性和效率的关键。以下将详细解读这些概念,并提供相应的 Java 示例代码和 Maven 依赖。

注:如果是跟着笔者一步步认识RabbitMQ以及手动搭建Rabbit,则需要注意,在搭建RabbitMQ时,笔者运行RabbitMQ使用了指定的vhosts=all,但在本示例中笔者并未指定虚拟主机(vhost),则默认使用/ ,如果你没有创建这个则会报错503,可参考https://blog.youkuaiyun.com/StaticKing/article/details/141467806?spm=1001.2014.3001.5502 此篇文章解决,如果你可以正常登录控制台则可在登录控台后,通过页面进行手动添加


消息生产者

消息生产者负责创建并发送消息到 RabbitMQ 服务器的交换机或队列中。

如何在代码中创建和发布消息:

  • 步骤概述:
    1. 创建 ConnectionFactory 并配置 RabbitMQ 服务器的连接参数。
    2. 创建 Connection 并从中创建 Channel
    3. 声明要使用的交换机或队列(如果尚未存在)。
    4. 使用 basicPublish 方法发布消息。

Java 示例:生产者发布消息到队列

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;

public class Producer {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] argv) throws Exception {
        // 1. 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        factory.setPort(5672);

        factory.setUsername("admin");

        factory.setPassword("123456");


        // 2. 创建连接和通道
        try (Connection connection = factory.newConnection();
             Channel channel = connection.createChannel()) {

            // 3. 声明队列(确保队列存在)
            boolean durable = true; // 队列持久化
            channel.queueDeclare(QUEUE_NAME, durable, false, false, null);

            // 4. 创建消息
            String message = "Hello World!";

            // 5. 发布消息
            channel.basicPublish("", QUEUE_NAME,
                    MessageProperties.PERSISTENT_TEXT_PLAIN, // 消息持久化
                    message.getBytes("UTF-8"));
            System.out.println(" [x] Sent '" + message + "'");
        }
    }
}

说明:

  • queueDeclare 方法用于声明一个队列。如果队列已存在且参数匹配,该方法不会有任何效果。
  • basicPublish 方法将消息发送到指定的交换机和路由键。在这个例子中,我们使用默认交换机(空字符串),并将消息直接发布到指定队列。
  • MessageProperties.PERSISTENT_TEXT_PLAIN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值