rabbitmq--简单模式(入门)

ConnectionUtil

import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

/**
 * @Description: TODO
 * @author: qinlei
 * @date: 2020年05月13日 15:07
 */
public class ConnectionUtil {
    public static Connection getConnection()throws Exception{
        //创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //设置请求头
        factory.setHost("localhost");
        //设置端口
        factory.setPort(5672);
        //虚拟主机名称
        factory.setVirtualHost("/ql_test");
        //账号密码
        factory.setUsername("ql");
        factory.setPassword("123456");
        //创建连接
        return factory.newConnection();
    }
}

生产者(发布消息)

import com.rabbitmq.client.*;

/**
 * @Description: TODO
 * @author: qinlei
 * @date: 2020年05月07日 9:59
 */
public class ProducerDemo {
    public static final String QUEUE_NAME = "first_queue";
    public static void main(String[] args) {
        try {
            //创建连接
            Connection connection = ConnectionUtil.getConnection();
            //创建通道
            Channel channel = connection.createChannel();
            //创建队列
            /*
            参数一:队列名称
            参数二:是否持久化队列
            参数三:是否独占本次连接
            参数四:是否在不使用的时候自动删除队列
            参数五:队列其他参数
             */
            channel.queueDeclare(QUEUE_NAME,false,false,false,null);
            //要发送的消息
            String msg = "这是一条消息";
            channel.basicPublish("",QUEUE_NAME,null,msg.getBytes());
            System.out.println("消息已发送");
            channel.close();
            connection.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

消费者(获取队列中的消息)

import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * @Description: TODO
 * @author: qinlei
 * @date: 2020年05月13日 15:09
 */
public class ConsumerDemo {
    public static void main(String[] args) {
        try {
            Connection connection = ConnectionUtil.getConnection();
            //创建通道
            Channel channel = connection.createChannel();
            //创建队列
            channel.queueDeclare(ProducerDemo.QUEUE_NAME,false,false,false,null);
            //监听消息
            DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
                /*
                consumerTag消息者标签 在channel.basicConsume时候可以指定
                envelope消息内容 可从中获取消息id,消息routingkey 交换机  消息和重转标记(收到消息失败后是否需要重新发送)
                properties 消息属性
                body 消息体
                 */
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                    System.out.println(consumerTag);
                    System.out.println(envelope.toString());
                    System.out.println(properties.toString());
                    System.out.println("消息内容:" + new String(body));
                }
            };
            /*
            监听消息
            参数一:队列名称
            参数二:是否自动确认 设置为true表示消息接收到自动向mq回复接收到了
             */
            channel.basicConsume(ProducerDemo.QUEUE_NAME,false,defaultConsumer);
        }catch (Exception e){}

    }
}

一步一步打断点可在web管理页面查看当前运行到哪步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlanto

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值