• rabbitmq(1)之"Hello World"模式


    1.架构图

      

     模式简介:

    • broker一个队列可以比喻作是一个邮箱。它存在于RabbitMQ中。虽然消息的传输需要通过RabbitMQ和你的应用程序,这些消息只能保存在队列中。一个队列是没有什么约束和限制的,只要你愿意它可以存储很多消息,本质上来说它就是一个无穷的缓冲区。许多消息生产者可以向一个发送消息,同样许多消费者可以尝试接收一个队列中的消息。下图所示就是一个队列

    • producer  生产者”其实和“消息发送”意思差不多。代表一个发送消息的生产者.
    • consumer 消费也可以理解为接收。一个接收者就是一个等待接收消息的程序
    • 生产者、消费者、中间件不必在同一台机器上。事实上他们应用当中没有在一台机器上。(rabbitmq部署到linux服务器,生产者和消费者分别在两个应用程序中,比如在订单系统和库存系统中)

    2.实践应用

    2.1  生产者

    package com.rabbitmq.producer;
    
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.utils.ConnectUtil;
    import com.rabbitmq.client.Channel;
    public class Producer1 {
        private static String QUEUE_NAME = "test_queue";
        public static void main(String[] argv) throws Exception{
            //获得连接
            Connection con =  ConnectUtil.getConnection();
            //获得通道
            Channel channel = con.createChannel();
            //声明创建队列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            //消息内容
            String message = "hello world!";
            //发送消息队列
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            //发送成功,打印发送信息
            System.out.println("生产者发送消息是:"+message);
            //关闭通道和连接
            channel.close();
            con.close();
            
        }
    }

    2.2 消费者

    package com.rabbitmq.consumer;
    
    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.client.QueueingConsumer;
    import com.rabbitmq.client.QueueingConsumer.Delivery;
    import com.rabbitmq.utils.ConnectUtil;
    
    public class Consumer {
        private static String QUEUE_NAME = "test_queue";
        public static void main(String[] argv) throws Exception{
            //获得连接
            Connection con =  ConnectUtil.getConnection();
            //获得通道
            Channel channel = con.createChannel();
            //声明创建队列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            //创建消息者
            QueueingConsumer consumer = new QueueingConsumer(channel); 
            //发送消息队列
            channel.basicConsume(QUEUE_NAME, true, consumer);
            while(true){
                Delivery delivery= consumer.nextDelivery();
                String message = new String(delivery.getBody());
                System.out.println("g 消费者接受的消息是:"+message);
            }
        }
    }
  • 相关阅读:
    徐丽君 20191017-1 每周例行报告
    徐丽君 20191010-2 每周例行报告
    徐丽君 20190919-1 每周例行报告
    徐丽君 20190919-4 单元测试结对
    20191128-1 总结
    20191121-1 每周例行报告
    20191114-1 每周例行报告
    20191107-1 每周例行报告
    20191031-1 每周例行报告
    20191024-1 每周例行报告
  • 原文地址:https://www.cnblogs.com/fengyan20150508/p/8834547.html
Copyright © 2020-2023  润新知