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

不足之处

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

posted @   JXY_Super  阅读(82)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
阅读排行:
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 本地部署 DeepSeek:小白也能轻松搞定!
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)
历史上的今天:
2019-10-10 CURL命令
2019-10-10 跨域访问
2019-10-10 JSR-303
点击右上角即可分享
微信分享提示