消息中间件——RabbitMQ(六)理解Exchange交换机核心概念!

本文详细介绍了RabbitMQ的Exchange交换机核心概念,包括Direct、Topic和Fanout三种类型的Exchange。通过代码示例展示了如何在Java中进行生产和消费,强调了routingKey在不同Exchange类型中的作用,以及消息的持久化和虚拟主机的概念。
摘要由CSDN通过智能技术生成

//durable 是否持久化消息

QueueingConsumer consumer = new QueueingConsumer(channel);

//参数:队列名称、是否自动ACK、Consumer

channel.basicConsume(queueName, true, consumer);

//循环获取消息

while(true){

//获取消息,如果没有消息,这一步将会一直阻塞

Delivery delivery = consumer.nextDelivery();

String msg = new String(delivery.getBody());

System.out.println(“收到消息:” + msg);

}

}

}

测试结果:

打印结果

注意需要routingKey保持一致。可以自己尝试修改routingkey,是否能收到消息。

4. Topic Exchange


  • 所有发送到Topic Exchange的消息被转发到所有管线RouteKey中指定Topic的Queue上

  • Exchange将RouteKey和某Topic进行模糊匹配,此时队列需要绑定一个Topic

注意:可以使用通配符进行模糊匹配

符号 “#” 匹配一个或多个词

符号 “_" 匹配不多不少一个词

例如:“log.#” 能够匹配到 “log.info.oa”

"log._” 只会匹配到 “log.error”

Topic Exchange结构图

在一堆消息中,每个不同的队列只关心自己需要的消息。

4.1 代码演示

生产端:

/**

  • @ClassName: Producer4TopicExchange

  • @Description: 生产者

  • @author Coder编程

  • @date2019年7月19日 下午22:32:41

*/

public class Producer4TopicExchange {

public static void main(String[] args) throws Exception {

//1创建ConnectionFactory

Connection connection = ConnectionUtils.getConnection();

//2创建Channel

Channel channel = connection.createChannel();

//3声明

String exchangeName = “test_topic_exchange”;

String routingKey1 = “user.save”;

String routingKey2 = “user.update”;

String routingKey3 = “user.delete.abc”;

//4发送

String msg = “Coder编程 Hello World RabbitMQ 4 Topic Exchange Message …”;

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值