【RabbitMQ之路由类型为fanout】

本文介绍了RabbitMQ中fanout类型的交换机,它不处理路由键,会将所有消息转发到与其绑定的所有队列。通过编码实践展示了生产者如何发送消息以及消费者如何监听并消费这些消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Fanout Exchange 不需要路由键。只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout交换机转发消息是最快的(不需要做路由规则的判断)。 

任何发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(Binding)的所有Queue上。

编码实践

一、生产者和消费者模型

1、创建连接(生产端)

Connection connection = null;
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("youHost");
connectionFactory.setUsername("userName");
connectionFactory.setPassword("password");
connection = connectionFactory.newConnection();

2、创建channel(生产端)

Channel channel = connection.createChannel();

3、创建exchange(生产端)

channel.exchangeDeclare("myExchange", "fanout", true, false, null);

4、创建queue(生产端)

channel.queueDeclare("testQueue",true,false,false,null);
channel.queueDeclare("testQueue1",true,false,false,null);
channel.queueDeclare("testQueue2",true,false,false,null);

5、绑定路由键(生产端)

//三个不同的队列,三个不同的路由键
channel.queueBind("testQueue","myExchange","test");
channel.queueBind("testQueue1","myExchange","test1");
channel.queueBind("testQueue2","myExchange","test2");

6、发送消息(生产端)

//发送消息,路由键为myExchange
for(int i=0;i<10;i++){
   channel.basicPublish("myExchange","myExchange",null,(msg + i).getBytes());
}

发送消息结果:

上述结果表明:fanout类型的交换机,不处理路由键,当发送消息时,都会发送消息到绑定了该交换机的消息队列中

1、创建连接(消费者端)

Connection connection = null;


ConnectionFactory connectionFactory = new ConnectionFactory();


connectionFactory.setHost("you host");


connectionFactory.setUsername("xxxx");


connectionFactory.setPassword("xxxx");


connection = connectionFactory.newConnection();

2、创建channel(消费者端)

Channel channel = connection.createChannel();

3、创建消费者(消费者端)

QueueingConsumer consumer = new QueueingConsumer(channel);

4、监听消息队列(消费者端)

 channel.basicConsume("队列名称", consumer);

5、消费消息(消费者端)

while (( delivery = consumer.nextDelivery()) != null){

byte[] body = delivery.getBody();

String msg = new String(body);

System.out.println(msg);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值