栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

RabbitMQ订阅发布模式

RabbitMQ订阅发布模式

RabbitMQ订阅发布模式
  • 首先我们需要一两个消费者才能展示我们的订阅发布模式
    • 首先先展示我的工具类——也就是获取信道的工具类。
    • 消费者类
    • 写完我们的消费者,就是我们的生产着了
    • 最后我们就可以展示我们的订阅发布模式了。

首先我们需要一两个消费者才能展示我们的订阅发布模式 首先先展示我的工具类——也就是获取信道的工具类。
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;


public class RabbitMQUtils {

    public static Channel getChannel()throws Exception{
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("*.*.*.*");//你自己的服务器IP地址
        factory.setUsername("guest");//用户名
        factory.setPassword("guest");//密码
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        return channel;
    }

}
消费者类
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;
import com.yyp.rabbitmq.utils.RabbitMQUtils;


public class ReceiveLogs1 {

    //交换机名称
    public static final String EXCHANGE_NAME = "logs";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitMQUtils.getChannel();
        //声明交换机
        channel.exchangeDeclare(EXCHANGE_NAME,"fanout");
        
        String queuename = channel.queueDeclare().getQueue();
        
        channel.queueBind(queuename,EXCHANGE_NAME,"");
        System.out.println("1等待就收消息,把接收到消息打印在控制台上。。。。。。");
        DeliverCallback deliverCallback = (consumerTag,message) ->{
            System.out.println(new String(message.getBody()));
        };
        channel.basicConsume(queuename,true,deliverCallback,(c,m) ->{});
    }

}

我们需要两个消费者

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;
import com.yyp.rabbitmq.utils.RabbitMQUtils;


public class ReceiveLogs2 {

    //交换机名称
    public static final String EXCHANGE_NAME = "logs";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitMQUtils.getChannel();
        //声明交换机
        channel.exchangeDeclare(EXCHANGE_NAME,"fanout");
        
        String queuename = channel.queueDeclare().getQueue();
        
        channel.queueBind(queuename,EXCHANGE_NAME,"");
        System.out.println("2等待就收消息,把接收到消息打印在控制台上。。。。。。");
        DeliverCallback deliverCallback = (consumerTag,message) ->{
            System.out.println(new String(message.getBody()));
        };
        channel.basicConsume(queuename,true,deliverCallback,(c,m) ->{});
    }

}

写完我们的消费者,就是我们的生产着了
import com.rabbitmq.client.Channel;
import com.yyp.rabbitmq.utils.RabbitMQUtils;

import java.util.Scanner;


public class EmitLog {

    public static final String EXCHANGE_NAME = "logs";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitMQUtils.getChannel();
        channel.exchangeDeclare(EXCHANGE_NAME,"fanout");
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String message = scanner.next();
            channel.basicPublish(EXCHANGE_NAME,"",null,message.getBytes());
            System.out.println("已发送消息");
        }
    }

}

最后我们就可以展示我们的订阅发布模式了。




我们消息发送了,两个都能接收,这就是订阅发布模式

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/612690.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号