• RabbitMQ官方入门案例


    官方提供7个案例

    RabbitMQ官方链接

    每个案例点击进去都会有详细讲解

    helloworld-demo

    导入依赖

    导入依赖

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

    官方实例

    实例地址

    消息生产者

    setPort(5672)

    如图需要开启5672端口

    详情端口参考

    /**
     * @PackageName : com.rzk
     * @FileName : Send
     * @Description : 消息生产者
     * @Author : rzk
     * @CreateTime : 23/6/2021 上午12:21
     * @Version : 1.0.0
     */
    public class Send {
    
        //定义队列名称
        private final static String QUEUE_NAME = "hello";
    
        public static void main(String[] argv) throws Exception {
            //创建连接工厂
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("ip");
            factory.setUsername("yeb");
            factory.setVirtualHost("/yeb");
            factory.setPassword("yeb");
            factory.setPort(5672);
    
            try (
                    //连接工厂创建连接   
                    //连接会自动关闭 Connection 继承ShutdownNotifier, Closeable
                    //Closeable 继承 AutoCloseable  下有close方法
                    Connection connection = factory.newConnection();
                    //创建信道
                    Channel channel = connection.createChannel()) {
                /**
                 * 绑定队列
                 * 声明队列
                 *  第一个参数 queue :队列名称
                 *  第二个参数 durable :是否持久化
                 *  第三个参数 Exclusive :排他队列,如果一个队列被声明为排他队列,该队列仅对首次声明的连接可见,并在连接断开时自动删除。
                 * 这里需要注意三点:
                 *      1 .排他队列是基于连接可见的,同一连接的不同通道是可以同时访问同一个连接创建的排他他队
                 *      2 . ”百次“,如果一个连接已经声明了一个排他队列,其他连接是不允许建立同名的;排他队列这个与昔通队歹怀同。
                 *      3 .即使该队列是持久化的,一旦连接关闭或者客户端退出,该排他队列都会被自动删除的。这种队列适用于只限于一个容户端发送读取消息的应用场景。
                 * 第四个参数 Auto-delete :自动删除,如果该队列没有任何订阅的消费者的话,该队列会被自动删除。这种队列适用于临时队列
                 */
                channel.queueDeclare(QUEUE_NAME, false, false, false, null);
                String message = "Hello World!";
                //队列消息的生产者:发送消息
                channel.basicPublish("", QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8));
                System.out.println(" [x] Sent '" + message + "'");
            }
        }
    }
    

    消息接收

    /**
     * @PackageName : com.rzk.recv
     * @FileName : Recv
     * @Description : 接收
     * @Author : rzk
     * @CreateTime : 23/6/2021 上午12:22
     * @Version : 1.0.0
     */
    public class Recv {
        private final static String QUEUE_NAME = "hello";
    
        public static void main(String[] argv) throws Exception {
            //创建工厂
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("ip");
            factory.setUsername("yeb");
            factory.setVirtualHost("/yeb");
            factory.setPassword("yeb");
            factory.setPort(5672);
            //连接工厂创建连接
            Connection connection = factory.newConnection();
            //创建信道
            Channel channel = connection.createChannel();
            //绑定队列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
    
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                String message = new String(delivery.getBody(), "UTF-8");
                System.out.println(" [x] Received '" + message + "'");
            };
            //监听队列消费消息
            channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });
        }
    }
    

    启动发送消息方法

    然后去RabbitMQ客户端yeb用户登录 查看是否有一个消息

    启动接收消息方法

    查看控制台和客户端消息有没有变为0变为0就是接收成功

    到达这一步简单的例子使用成功

    可以选择channel通道看看连接是否在线

    这样显示是表示接收通道还处于连接状态

  • 相关阅读:
    UITableView的一些事1
    Mac修改文件权限:You don’t have permission to save the file
    svn: is already a working copy for a different url 解决办法
    svn服务配置
    github push出错(1)You can't push to git:// Use https://
    判断系统版本
    浅谈 Qt 布局那些事
    Qt布局管理
    详解 QT 主要类 QWidget
    新手须知 QT类大全
  • 原文地址:https://www.cnblogs.com/rzkwz/p/14921000.html
Copyright © 2020-2023  润新知