zoukankan      html  css  js  c++  java
  • RabbitMQ-简单队列

    模型

    graph LR
    生产者 -->id[queue]
    id[queue]--> 消费者
    

    获取连接

    public static Connection getConnection() throws IOException, TimeoutException {
            ConnectionFactory connectionFactory = new ConnectionFactory();
            connectionFactory.setHost("localhost");
            connectionFactory.setPort(5672);
            connectionFactory.setVirtualHost("/vhost_ct");
            connectionFactory.setUsername("guest");
            connectionFactory.setPassword("guest");
            return connectionFactory.newConnection();
    }
    

    生产者Producer

    
    public class Send {
     
        private static final String QUEUE_NAME = "test_simple_queue";
     
        public static void main(String[] a) throws IOException, TimeoutException {
            //获取一个链接
            Connection connection = ConnectionUtil.getConnection();
            //从链接中获取一个通道
            Channel channel = connection.createChannel();
     
            //创建队列声明
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
     
            String msg = "hello_simple";
            //发布
            channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
            System.out.println("send:" + msg);
            channel.close();
            connection.close();
        }
    }
    

    消费者 Consumer

    public class Recv {
     
        private static final String QUEUE_NAME = "test_simple_queue";
     
        public static void main(String[] a) throws IOException, TimeoutException {
            //获取一个链接
            Connection connection = ConnectionUtil.getConnection();
            //从链接中获取一个通道
            Channel channel = connection.createChannel();
     
            //定义队列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
     
            DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
                //获取到达的消息
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
                                           byte[] body) throws IOException {
                    String msg = new String(body, "utf-8");
                    System.out.println(msg);
                }
            };
            //监听队列
            channel.basicConsume(QUEUE_NAME, true, defaultConsumer);
        }
    }
    

    不足之处

    耦合性较高,生产者和消费者一一对应,修改队列名,生产者和消费者需同时修改

  • 相关阅读:
    04-Go语言之运算符
    02-Go语言之变量和常量
    idea 无法加载识别本地类
    阿里云OSS实践篇
    jemeter 压测入门篇(附带工具)
    SpringBoot 中的那些“开关”
    java8 新特性之4大函数式接口
    java8 新特性之optional
    VSCode vue开发前配置
    前端架构演进及主流UI
  • 原文地址:https://www.cnblogs.com/jsersudo/p/13793065.html
Copyright © 2011-2022 走看看