首页 > 其他 > 详细

Rabbit五种消息队列学习(二) – 简单队列

时间:2019-02-20 11:58:18      阅读:161      评论:0      收藏:0      [点我收藏+]

队列结构图

技术分享图片

P:消息的生产者 
C:消息的消费者 
红色:队列

生产者将消息发送到队列,消费者从队列中获取消息。

测试

1、连接MQ

public static Connection getConnection() throws Exception {
        //定义连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //设置服务地址
        factory.setHost("192.168.116.137");
        //端口
        factory.setPort(5672);
        //设置账号信息,用户名、密码、vhost
        factory.setVirtualHost("/taotao");
        factory.setUsername("taotao");
        factory.setPassword("taotao");
        // 通过工程获取连接
        Connection connection = factory.newConnection();
        return connection;
    }

2、生产者

private final static String QUEUE_NAME = "test_queue";

    public static void main(String[] argv) throws Exception {
        // 获取到连接以及mq通道
        Connection connection = ConnectionUtil.getConnection();
        // 从连接中创建通道
        Channel channel = connection.createChannel();

        // 声明(创建)队列
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        // 消息内容
        String message = "Hello World 2!";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println(" [x] Sent ‘" + message + "‘");

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

3、消费者

private final static String QUEUE_NAME = "test_queue";

    public static void main(String[] argv) throws Exception {

        // 获取到连接以及mq通道
        Connection connection = ConnectionUtil.getConnection();
        Channel channel = connection.createChannel();

        // 声明队列
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        // 定义队列的消费者
        QueueingConsumer consumer = new QueueingConsumer(channel);
        // 监听队列
        channel.basicConsume(QUEUE_NAME, true, consumer);

        // 获取消息
        while (true) {
            QueueingConsumer.Delivery delivery = consumer.nextDelivery();
            String message = new String(delivery.getBody());
            System.out.println(" [x] Received ‘" + message + "‘");
        }
    }

4、查看管理平台 

技术分享图片

从上图可以看到,消息已经创建。

5、总结

这种模式相对直接,生产者和消费者直接必须声明相同的队列,模型较为单一

 

Rabbit五种消息队列学习(二) – 简单队列

原文:https://www.cnblogs.com/shanheyongmu/p/10405458.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!