Java代码连接RabbitMQ服务器

目录

1.添加依赖

2.生产者代码

3.消费者代码

4.效果

1.发送消息

2.消费消息

5.注意


1.添加依赖

    <dependency>
      <groupId>com.rabbitmq</groupId>
      <artifactId>amqp-client</artifactId>
      <version>5.12.0</version>
    </dependency>

2.生产者代码

public class Producer {

    public static void main(String[] args) throws IOException, TimeoutException {
        String exchangerName = "ex_exchanger_name";
        // 交换机名称
        String queueName = "ex_queue_name";
        // 队列名称
        ConnectionFactory connectionFactory = new ConnectionFactory();
        // 创建连接工厂
        connectionFactory.setHost("ip地址");
        // RabbitMQ服务器地址(写自己服务器对应的ip地址)
        connectionFactory.setUsername("admin");
        // RabbitMQ用户名,这里是自定义用户名
        connectionFactory.setPassword("123456");
        // RabbitMQ密码,这里是自定义密码
        connectionFactory.setPort(5672);
        // RabbitMQ端口号

        Connection connection = connectionFactory.newConnection();
        //创建连接
        Channel channel = connection.createChannel();
        //创建信道

        /**
         * 创建交换机
         * 1、交换机名称
         * 2.交换机类型,direct,topic,fanout和header(这里选择direct)
         * 3.指定交换机是否需要持久化,如果设置为true,那么交换机的元数据要持久化
         * 4.指定交换机没有队列绑定时是否需要删除,设置为false表示不删除
         * 5.Map<String,Object>类型,用来指定我们交换机其它的一些结构化参数,我们在这里直接设置为null
         */
        channel.exchangeDeclare(exchangerName, BuiltinExchangeType.DIRECT,true,false,null);

        /**
         *生成一个队列
         * 1.队列名称
         * 2.队列是否需要持久化(只是队列名称持久化,而非队列中的消息)
         * 3.表示队列是否私有,只有创建他的应用程序才能消费消息
         * 4.队列在没有消费者订阅的情况下是否自动删除
         * 5.队列的一些结构化信息,比如声明死信队列,磁盘队列会用到
         */
        channel.queueDeclare(queueName,true,false,false,null);

        /**
         * 将我们的交换机和队列绑定
         * 1.队列名称
         * 2.交换机名称
         * 3.路由键,在我们直连模式下,可以为我们的队列名称
         */

        channel.queueBind(queueName,exchangerName,queueName);

        //发送消息
        String message = "hello rabbitmq";

        /**
         * 发送消息
         * 1.发送到哪个交换机
         * 2.队列名称
         * 3.其它参数信息
         * 4.发送消息的消息体
         */
        channel.basicPublish(exchangerName,queueName,null,message.getBytes());

        channel.close();//关闭信道
        connection.close();//关闭连接
    }

}

3.消费者代码

public class Consumer {

    public static void main(String[] args) throws IOException, TimeoutException {

        ConnectionFactory connectionFactory = new ConnectionFactory();
        // 创建连接工厂
        connectionFactory.setHost("ip地址");
        // RabbitMQ服务器地址(写自己服务器对应的ip地址)
        connectionFactory.setUsername("admin");
        // RabbitMQ用户名,这里是自定义用户名
        connectionFactory.setPassword("123456");
        // RabbitMQ密码,这里是自定义密码
        connectionFactory.setPort(5672);
        // RabbitMQ端口号


        Connection connection = connectionFactory.newConnection();
        //创建连接
        Channel channel = connection.createChannel();
        //创建信道

        DeliverCallback deliverCallback = (consumerTage,message) -> {

            System.out.println("接收到消息"+new String(message.getBody()));

        };

        CancelCallback cancelCallback = consumerTage-> {
            System.out.println("消息消费中断");
        };

        /**
         * 消费消息
         * 1.消费哪个队列
         * 2.消费成功后,是否需要自动应答,如果为true,则是自动应答
         * 3.接收消息的一个回调函数
         * 4.取消消息的回调函数
         */

        channel.basicConsume("ex_queue_name",true,deliverCallback,cancelCallback);

        channel.close();//关闭信道

        connection.close();//关闭连接

    }
}

4.效果

为了显示效果,这里需要登录RabbitMQ对应的web登录管理界面:

如果不知如何启动RabbitMQ服务或登录该管理界面,参考之前文章Rabbitmq的安装与使用(Linux版)icon-default.png?t=N6B9https://blog.csdn.net/Kristabo/article/details/131965339

1.发送消息

 启动Producer程序:

可以看到多了一个名称为:"ex_queue_name"的队列,同时多了一条未消费信息:

2.消费消息

启动Consumer程序

 运行后,可以接收到发送的消息内容:

同时在此检查队列情况:

可以发现名称为 "ex_queue_name"的队列中已没有未读消息

5.注意

这里用到的是direct类型的交换机,如果还需要其他类型交换机相关代码参考,可关注公众号【蜗牛变涡流】,回复rabbitMQ获取完整代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Java连接RabbitMQ,您可以使用RabbitMQ的官方Java客户端库,即RabbitMQ Java Client。以下是一个简单的示例代码,演示如何连接RabbitMQ服务器: 首先,确保您已经将RabbitMQJava客户端库添加到您的项目中。您可以在 Maven 或 Gradle 中添加以下依赖项: Maven 依赖项: ```xml <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.9.0</version> </dependency> ``` Gradle 依赖项: ```groovy implementation 'com.rabbitmq:amqp-client:5.9.0' ``` 然后,您可以使用以下代码连接RabbitMQ: ```java import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; public class RabbitMQConnection { public static void main(String[] args) { // 创建连接工厂 ConnectionFactory factory = new ConnectionFactory(); // 配置 RabbitMQ 服务器连接信息 factory.setHost("localhost"); // RabbitMQ 服务器地址 factory.setPort(5672); // RabbitMQ 服务器端口号 factory.setUsername("guest"); // RabbitMQ 用户名 factory.setPassword("guest"); // RabbitMQ 密码 try { // 创建连接 Connection connection = factory.newConnection(); // 连接成功后可进行其他操作,例如创建/消费队列等 System.out.println("成功连接RabbitMQ 服务器"); // 关闭连接 connection.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 请确保将上述代码中的 RabbitMQ 服务器地址、端口号、用户名和密码更改为您实际使用的值。这段代码将尝试连接RabbitMQ 服务器并打印成功连接的消息。如果连接失败,将打印出异常信息。 这只是一个简单的示例,您可以根据您的实际需求进行更多的操作,例如创建队列、发送/接收消息等。有关更多详细信息,请参阅 RabbitMQ Java Client 的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蜗牛变涡流

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值