美文网首页
RabbitMQ快速入门

RabbitMQ快速入门

作者: Cook1fan | 来源:发表于2020-11-18 06:56 被阅读0次
image.png
public class ProducerHelloWorld {
    public static void main(String[] args) throws IOException, TimeoutException {
        // 1 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        // 2 设置参数
        factory.setHost("localhost");
        factory.setPort(5672);
        factory.setVirtualHost("/itcast");
        factory.setUsername("heima");
        factory.setPassword("heima");
        // 3 创建连接 Connection
        Connection connection = factory.newConnection();
        // 4 创建 Channel
        Channel channel = connection.createChannel();
        // 5 创建队列 Queue
        channel.queueDeclare(
                "hello_world", //  队列名称
                true, // 是否持久化, 当 mq 重启之后还在
                false, // 是否独占,只有有一个消费者监听这个队列,当 Connection 关闭时,是否删除队列
                false, // 是否自动删除,当没有 Consumer 时,自动删除
                null // 参数
        ); // 没有就创建队列,有就不会创建
        // 6 发送消息
        String body = "hello rabbitmq ~~~";
        channel.basicPublish(
                "", // 交换机名称,简单模式下交换机会使用默认的 ""
                "hello_world", // 路由名称
                null, // 配置信息
                body.getBytes() // 发送消息
        );
        // 7 释放资源
        channel.close();
        connection.close();
    }
}
public class ConsumerHelloWorld {
    public static void main(String[] args) throws IOException, TimeoutException {
        // 1 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        // 2 设置参数
        factory.setHost("localhost");
        factory.setPort(5672);
        factory.setVirtualHost("/itcast");
        factory.setUsername("heima");
        factory.setPassword("heima");
        // 3 创建连接 Connection
        Connection connection = factory.newConnection();
        // 4 创建 Channel
        Channel channel = connection.createChannel();
        // 5 创建队列 Queue
        channel.queueDeclare(
                "hello_world", //  队列名称
                true, // 是否持久化, 当 mq 重启之后还在
                false, // 是否独占,只有有一个消费者监听这个队列,当 Connection 关闭时,是否删除队列
                false, // 是否自动删除,当没有 Consumer 时,自动删除
                null // 参数
        ); // 没有就创建队列,有就不会创建
        // 6 接受消息
        Consumer consumer = new DefaultConsumer(channel) {
            // 收到消息后,会自动执行该方法
            @Override
            public void handleDelivery(
                    String consumerTag, // 标识
                    Envelope envelope, // 获取一些信息,交换机,路由 key
                    AMQP.BasicProperties properties, // 配置信息
                    byte[] body // 数据
            ) {
                System.out.println("consumerTag: " + consumerTag);
                System.out.println("exchange: " + envelope.getExchange());
                System.out.println("routingKey: " + envelope.getRoutingKey());
                System.out.println("properties: " + properties);
                System.out.println("body: " + new String(body));
            }
        };
        channel.basicConsume(
                "hello_world", // 队列名称
                true, // 是否自动确认
                consumer // 回调对象
        );
    }
}
image.png

相关文章

网友评论

      本文标题:RabbitMQ快速入门

      本文链接:https://www.haomeiwen.com/subject/cvexiktx.html