JAVA发送消息到RabbitMq

这篇具有很好参考价值的文章主要介绍了JAVA发送消息到RabbitMq。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目中,作为生产者自定义消息发送到RabbitMq。

1.引入rmq依赖

     <!-- rabbitmq 依赖 -->
        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.9.0</version>
        </dependency>

2.创建链接、断开连接工具类。

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * RabbitMq 工具类
 *
 * @author Klay
 * @date 2023/6/25
 */
public class RabbitmqUtils {
    private static Channel channel = null;
    private static Connection connection = null;

    /**
     * 获取连接
     *
     * @author Klay
     * @date 2023/6/25 10:37
     */
    public static Channel getChannel() {
        //定义连接池
        ConnectionFactory factory = new ConnectionFactory();
        //设置主机地址
        factory.setHost("127.0.0.1");
        //设置端口
        factory.setPort(5672);
        //设置用户名
        factory.setUsername("guest");
        //密码
        factory.setPassword("guest");
        //虚拟机路径
        factory.setVirtualHost("/");
        try {
            connection = factory.newConnection();
            //创建信道
            channel = connection.createChannel();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        }
        return channel;
    }

    /**
     * 关闭连接
     *
     * @author Klay
     * @date 2023/6/25 10:37
     */
    public static void closeConnection() {
        try {
            channel.close();
            connection.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        }

    }
}

3.发送消息。大部分业务应用场景中,只需要发送消息到指定的交换机(exchange)中。如果业务需要创建交换机,则将注释的代码打开,创建交换机、队列,并绑定。发送消息时,将对应的交换机、路由进行替换即可。


import com.hikvision.ardatatormq.utils.RabbitmqUtils;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;

/**
 * @author Klay
 * @date 2023/10/16 016
 */
@Slf4j
public class SendMessageTest {
    public static void main(String[] args){
        //利用写好工具类获取信道连接
        Channel channel = RabbitmqUtils.getChannel();
        try {
            /**
             *创建一个交换机
             *1.交换机名称
             *2.交换机类型有fanout,direct,topic,headers
             *3.是否持久化
             *4.设置是自动删除,当没有队列与当前交换机绑定时自动删除
             *5.设置是否内置,表示内置的交换机
             *6.设置其他的一些结构化参数
             */
//            channel.exchangeDeclare("text_pubsub", BuiltinExchangeType.FANOUT, false, false, false, null);
            /**
             *1.队列名称
             *2.是否持久化,持久化会存盘,重启也还存在
             *3.exclusive 是否排他如果一个队列被声明为排他的队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除这里需要注意三点:排他的队列是基于连接(Connection)可见的,同一个连接的不同信道(Channel)是可以同时访问同一连接创建的排他队列;“首次”是指如果一个连接已经声明了一个排他队列,其它连接是不允许建立同名的排他队列的,这个与普通队列不同;即使该队列是持久化的,一旦连接关闭或者客户端退出,该排他队列都会被自动删除,这种队列适用于一个客户端同时发送和读取消息的应用场景。
             *4.是否自动删除至少有一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除
             *5.设置队列的其他配置参数
             */
//            channel.queueDeclare("pubsub_queue1", false, false, false, null);
            /**
             *将交换机与队列绑定
             *1.队列名称
             *2.交换机名称
             *3.routerkey(路由key)
             *4.其他的绑定参数
             */
//            channel.queueBind("pubsub_queue1", "text_pubsub", "routingKeyTest");

            /**
             *发送消息
             *1.交换机名称
             *2.routerkey路由key,目前没有指定双引号即可
             *3.无额外配置写null
             *4.消息体
             */
            String msg = "发布订阅模式!!!";
            channel.basicPublish("amq.topic", "routingKeyTest", null, msg.getBytes());
            log.info("消息发送成功!:{}", msg);
        } catch (IOException e) {
            log.error("发送消息IOException:{}", e);
        } finally {
            //关闭连接
            RabbitmqUtils.closeConnection();
        }

    }
}

4.进行测试。

        4.1为交换机amq.topic创建一个测试队列并绑定。

JAVA发送消息到RabbitMq,java,rabbitmq,java-rabbitmq,java,rabbitmq

JAVA发送消息到RabbitMq,java,rabbitmq,java-rabbitmq,java,rabbitmq

     4.2发送消息

JAVA发送消息到RabbitMq,java,rabbitmq,java-rabbitmq,java,rabbitmq文章来源地址https://www.toymoban.com/news/detail-722926.html

到了这里,关于JAVA发送消息到RabbitMq的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Centos安装RabbitMQ,JavaSpring发送RabbitMQ延迟延时消息,JavaSpring消费RabbitMQ消息

    erlang 和 rabbitmq 版本说明 https://www.rabbitmq.com/which-erlang.html 确认需要安装的mq版本以及对应的erlang版本。 RabbitMQ下载地址: https://packagecloud.io/rabbitmq/rabbitmq-server Erlang下载地址: https://packagecloud.io/rabbitmq/erlang RabbitMQ延迟消息插件下载 https://github.com/rabbitmq/rabbitmq-delayed-message-exc

    2024年02月08日
    浏览(51)
  • Java RabbitMQ消息队列简单使用

    消息队列,即MQ,Message Queue。 消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。

    2024年02月12日
    浏览(61)
  • RabbitMQ基于Java实现消息应答

    概念 RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑RabbitMQ是一个快递站, 一个快递员帮你传递快件。RabbitMQ 与快递站的主要区别在于,它不

    2024年04月10日
    浏览(38)
  • RabbitMQ系列(5)--使用Java实现RabbitMQ的消费者接收消息

    前言:先简单了解RabbitMQ的工作过程,方便后续开发理清思路 简略: 详细: 1、新建消费者类 效果图: 2、编写消费者消费消息的代码 例: 3、查看代码运行结果 运行代码后如果有输出生产者发送的”Hello World”信息,则证明消费者消费消息成功 4、在web页面上查看队列的消

    2024年02月06日
    浏览(43)
  • 90、RabbitMQ如何确保消息发送?消息接收?

    信道需要设置为 confirm 模式,则所有在信道上发布的消息都会分配一个唯一 ID。 一旦消息被投递到queue(可持久化的消息需要写入磁盘),信道会发送一个确认给生产者(包含消息唯一 ID) 如果 RabbitMQ 发生内部错误从而导致消息丢失,会发送一条 nack (未确认) 消息给生产者。

    2024年02月16日
    浏览(46)
  • rabbitmq管理页面发送消息

    有的时候我们因为一些特殊的原因或者需要测试某个功能,需要发送mq,但是又不能直接触发消息。这种情况下,我们可以直接在mq控制台发送消息。 一、首先打开rabbitmq管理台 二、右上角选择环境,开发或者测试 三、打开Queues Tab页 四、选中某个queue,页面下拉到Publish mes

    2024年02月12日
    浏览(41)
  • Java开发 - 消息队列之RabbitMQ初体验

    目录 前言 RabbitMQ 什么是RabbitMQ RabbitMQ特点 安装启动 RabbitMQ和Kafka的消息收发区别 RabbitMQ使用案例 添加依赖 添加配置 创建RabbitMQ配置类 RabbitMQ消息的发送 RabbitMQ消息的接收 测试 结语 前一篇,我们学习了Kafka的基本使用,这一篇,我们来学习RabbitMQ。他们作为消息队列本身都具

    2024年02月03日
    浏览(44)
  • RabbitMQ管理页面怎么发送消息

    1.登录RabbitMQ 后台管理系统 点击Queues 2.Add a new queue 创建 一个 queue (h5) 3.进入queue (h5) 4.编辑header和发送内容 5.消费者消费

    2024年02月10日
    浏览(34)
  • 如何使用RabbitMQ发送和接收消息

    本文介绍了如何使用RabbitMQ的Python客户端库pika来发送和接收消息,并提供了示例代码。读者可以根据自己的需求修改代码,例如修改队列名称、发送不同的消息等。 RabbitMQ 是一个开源的消息队列软件,可以用于在应用程序之间传递消息。下面是一个使用 RabbitMQ 的流程和代码

    2024年02月15日
    浏览(46)
  • RabbitMq生产者发送消息确认

    一般情况下RabbitMq的生产者能够正常的把消息投递到交换机Exchange,Exchange能够根据路由键routingKey把消息投递到队列Queue,但是一旦出现消息无法投递到交换机Exchange,或无法路由到Queue的这种特殊情况下,则需要对生产者的消息进行缓存或者保存到数据库,后续在调查完RabbitM

    2024年02月04日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包