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);
        }
    }
    

    不足之处

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

  • 相关阅读:
    Newtonsoft.Json序列化 对时间格式化处理
    CSS常用提示浮出层的写法
    避免常见的6种HTML5错误用法
    varchar(Max) 对应SqlParameter 数据类型长度改为1
    IIS指定域名不能调试解决办法
    如何弹出固定大小及内容的网页窗口
    CSS图片圆角框的灵活处理
    精通CSS:高级Web标准解决方案(中文电子书下载)
    AjaxControlToolKit(整理)三.......(35个控件)简单介绍
    CSS通用开发库
  • 原文地址:https://www.cnblogs.com/jsersudo/p/13793065.html
Copyright © 2011-2022 走看看