Java17 --- Mabbitmq之安装测试

目录

一、拉取运行镜像

1.1、拉取镜像环境

1.2、运行镜像

 二、工作模式

2.1、消息的发送者 

2.2、消息的接收者 

2.3、生产队列模式 

2.3.1、消息的发送者 

 2.3.2、消息的接收者

2.4、发布订阅模式

2.4.1、消息的发送者 

2.4.2、消息的接收者 

2.5、路由模式 

2.5.1、消息的发布者 

2.5.2、消息的接收者 

2.6、主题模式 

2.6.1、消息的发布者 

2.6.2、消息的接收者 


一、拉取运行镜像

1.1、拉取镜像环境

docker pull rabbitmq:3.13-management 

1.2、运行镜像

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v rabbitmq-plugin:/plugins -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:3.13-management 

 

测试访问: 

 

 二、工作模式

 引入pom依赖

<dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.20.0</version>
        </dependency>

2.1、消息的发送者 

public class Producer {
    public static void main(String[] args) {
        //创建链接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置主机地址
        connectionFactory.setHost("192.168.200.110");
        //连接端口号
        connectionFactory.setPort(5672);
        //虚拟机主机名称默认 /
        connectionFactory.setVirtualHost("/");
        //连接用户名
        connectionFactory.setUsername("guest");
        //连接用户密码
        connectionFactory.setPassword("123456");
        Connection connection = null;
        Channel channel = null;
        try {
            //创建连接
             connection = connectionFactory.newConnection();
            //创建连接频道
            channel = connection.createChannel();
            //申明队列
            //String var1, 队列名称
            // boolean var2, 是否持久化队列
            // boolean var3, 是否独占本次连接,独占只能有一个消费者
            // boolean var4, 是否不使用时删除队列
            // Map<String, Object> var5 队列其他参数
            channel.queueDeclare("simple_quest",true,false,false,null);
            //发送的队列消息
            String message = "你好,沸羊羊";
            //String var1, 交换机名称,没有使用默认
            // String var2, 路由key,简单模式可以传递队列
            // AMQP.BasicProperties var3, 配置信息
            // byte[] var4 消息内存
            channel.basicPublish("","simple_quest",null,message.getBytes());
            System.out.println("发送已完成:" + message);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (TimeoutException e) {
            throw new RuntimeException(e);
        }finally {
            //关闭资源
            try {
                channel.close();
                connection.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            } catch (TimeoutException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

 

2.2、消息的接收者 

public class Consumer {
    public static void main(String[] args) {
        //创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置主机地址
        connectionFactory.setHost("192.168.200.110");
        //连接端口号
        connectionFactory.setPort(5672);
        //虚拟机主机名称默认 /
        connectionFactory.setVirtualHost("/");
        //连接用户名
        connectionFactory.setUsername("guest");
        //连接用户密码
        connectionFactory.setPassword("123456");
        Connection connection = null;
        Channel channel = null;
        try {
            //创建连接
            connection = connectionFactory.newConnection();
            //创建连接频道
            channel = connection.createChannel();
            //申明队列
            //String var1, 队列名称
            // boolean var2, 是否持久化队列
            // boolean var3, 是否独占本次连接,独占只能有一个消费者
            // boolean var4, 是否不使用时删除队列
            // Map<String, Object> var5 队列其他参数
            //channel.queueDeclare("simple_quest",true,false,false,null);
           //接收消息
            DefaultConsumer defaultConsumer = new DefaultConsumer(channel){
                @Override
                //String consumerTag,标识
                // Envelope envelope, 获取某些信息
                // AMQP.BasicProperties properties, 配置信息
                // byte[] body 数据
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                    System.out.println("consumerTag:" + consumerTag);
                    System.out.println("Exchange:" + envelope.getExchange());
                    System.out.println("RoutingKey:" + envelope.getRoutingKey());
                    System.out.println("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鸭鸭老板

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

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

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

打赏作者

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

抵扣说明:

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

余额充值