rabbitMQ的第三种模型(fanout)
fanout 扇出 也曾为广播
在广播模式下,消息发送流程是这样的:
- 可以有多个消费者
- 每个消费者有自己的queue(队列)
- 每个队列都要绑定到Exchange(交换机)
- 生产者发送的消息,只能够发送到交换机,交换机决堤要发送给那个队列,生产者无法决定
- 交换机把消息发送给绑定过的所有队列
- 队列的消费者都能拿到消息,实现一条消息被多个消费者消费
生产者
public class Provider { public static void main(String[] args) throws IOException { Connection connection = rabbitMQUtils.getConnection(); Channel channel = connection.createChannel(); //将通道声明指定交换机 //参数1交换机名字 参数2交换机类型 fanout 广播类型 channel.exchangeDeclare("logs","fanout"); //发送消息 channel.basicPublish("logs","",null,"fanout type message".getBytes()); rabbitMQUtils.connectionAndchannelClose(connection,channel); } }
消费者(创建多个相同的消费者)
public class Customer1 { public static void main(String[] args) throws IOException { Connection connection = rabbitMQUtils.getConnection(); Channel channel = connection.createChannel(); //通道绑定交换机 channel.exchangeDeclare("logs","fanout"); //临时列队 String queue = channel.queueDeclare().getQueue(); //绑定交换机和队列 channel.queueBind(queue,"logs",""); channel.basicConsume(queue,true,new DefaultConsumer(channel){ @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { super.handleDelivery(consumerTag, envelope, properties, body); System.out.println("消费者-1"+new String(body)); } }); } }
相关推荐
shyoldboy 2020-09-27
woaishanguosha 2020-07-18
OnMyHeart 2020-06-16
cj0 2020-06-07
zhuxue 2020-10-14
shenzhenzsw 2020-10-09
leihui00 2020-09-16
lishijian 2020-08-17
程序员伊成 2020-08-06
ljcsdn 2020-07-27
waitzkj 2020-07-25
powrexly 2020-07-20
liym 2020-07-20
zhoucheng0 2020-07-19
shenzhenzsw 2020-07-18
waitzkj 2020-07-18
zhoucheng0 2020-07-08
json0000 2020-07-04