RabbitMQ中Fanout交换机的使用

本文介绍了RabbitMQ中Fanout交换机的工作原理,它类似于广播模式,将消息发送到所有绑定到该交换机的队列。案例展示了如何创建消费者监听随机生成的队列,并通过Fanout交换机接收消息。发送方只需确保交换机存在,无需关心消息的接收方。执行结果显示,消息会被多个消费者随机接收到,未被监听的队列会被自动删除。
摘要由CSDN通过智能技术生成

交换机的基本原理

案例

由于Fanout类型的交换机原理类似于广播的模式,所以需要先启动消息的消费者以避免消息的丢失。

接受方:

消费者1:

public class Reseive {
   
    public static void main(String[] args) {
   
        ConnectionFactory factory=new ConnectionFactory();
        factory.setHost("192.168.79.140");
        factory.setPort(5672);
        factory.setUsername("admin");
        factory.setPassword("123456");
        /**通道资源和连接资源不需要关闭
         * 关闭小概率会抛出异常
         * */
        Connection connection=null;
        Channel channel=null;
        try {
   
            connection=factory.newConnection();
            channel=connection.createChannel();
            /**由于Fanout类型的交换机的消息类似于广播模式,所以它不需要绑定RountingKey
             * 而又可能会有多个消息消费者来接受队列中的数据,因此从队列时要创建一个随机的队列名称。
             *
             * 没有参数的queueDeclare函数会创建一个名字随机的队列
             * 该队列的数据是非持久化的、自动删除的、排外的(即只允许有一个监听者)
             *
             * getQueue()函数用于获取该队列的名称
             * */
            String queueName= channel.queueDeclare().getQueue();
            /**创建交换机
             * */
            channel.exchangeDeclare("fanoutExchange",
                    "fanout",true);
            /**由于Fanout类型的交换机不需要绑定RoutingKey所以这里为空字符串
             * */
            channel.queueBind(queueName,
                    "fanoutExchange","");
            /**获取消息
             * */
            channel.basicConsume
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值