消息队列-RabbitMQ(二)

130 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

接着上一篇的文章,继续讲解:

RabbitMQ在JAVA中的使用

下面是使用JAVA实现消息队列中的生产者(Producer): 主要将消息投递到对应的Exchange上面。一般是独立的程序。

//Producer 
public class Producer {
    
    public static void main(String[] args) throws IOException, TimeoutException {
        //1.创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //2.设置参数
        factory.setHost("10.2.5.115");
        factory.setPort(5672);
        factory.setUsername("admin");
        factory.setPassword("admin");
        //3.创建连接 Connection
        Connection conn = factory.newConnection();
        //4.创建Channel
        Channel channel = conn.createChannel();
        //5.创建队列Queue(此时未用到交换器)
        /**
         * String queue, 队列名称
         * boolean durable,是否持久化,当mq重启后还在
         * boolean exclusive,是否独占,只能有一个消费监听这队列
         * boolean autoDelete,是否自动删除,当没有consumer时,自动删掉
         * Map<String, Object> arguments 参数
         */
        //如果没有一个名字叫helloWorld的队列,则会创建该队列,如果有则不会创建
        channel.queueDeclare("helloWorld", true, false, false, null);
        
        /**
         * String exchange, 交换器名称,简单模式下交换器会使用默认的""
         * String routingKey,路由名称
         * BasicProperties props,配置信息
         * byte[] body 发送消息数据
         */
        //6.发送消息
        channel.basicPublish("", "helloWorld", null, "hello rabbitmq".getBytes());
        //7.释放 资源
        channel.close();
        conn.close();
    }
}

下面是使用JAVA实现消息队列中的消费者(Consumer): 消息消费者。消息的接收者,一般是独立的程序。

//Consumer 
public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1.创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //2.设置参数
        factory.setHost("10.2.5.115");
        factory.setPort(5672);
        factory.setUsername("admin");
        factory.setPassword("admin");
        //3.创建连接 Connection
        Connection conn = factory.newConnection();
        //4.创建Channel
        Channel channel = conn.createChannel();
        //5.创建队列Queue(此时未用到交换器)
        //如果没有一个名字叫helloWorld的队列,则会创建该队列,如果有则不会创建
        channel.queueDeclare("helloWorld", true, false, false, null);
        
        /**
         * String queue, 队列名
         * boolean autoAck, 是否自动确认
         * Consumer callback  回调函数
         */
        //接收消息
        channel.basicConsume("", true, null);
    }
}

以上~ 欢迎大家评论点赞~