上一篇,我们介绍了rabbimtmq的简单工作队列的使用方式,即生产者和消费者之间直接通过绑定相同的workqueue进行消息的发送和接收,如果业务逻辑比较简单,这样的方式也是可以用的,但在实际工作中,实际的业务场景远远比这个复杂,而且需要更加细粒度的对消息进行进行分发和接收,这就需要用到rabbitmq的另外一个组件exchange;
顾名思义,exchange在rabbitmq中翻译为交换机,交换机的作用可以理解为一个消息转发的中间容器,在这个容器里,为了满足消费端对消息的个性化需求,可以对原始的消息做一定程度的转换,类型过滤等操作,这样消费者接受到消息后处理起来相对更加便捷;
在rabbitmq中,exchange的使用主要对应着三种模式,fanout,topic,direct,即路由模式,发布订阅模式,下面的代码将模拟演示这两种主要的模式;
【1】发布订阅模式,pub/sub
假设有这样一个场景,气象局发布新闻,新浪,百度,QQ等第三方公司想要从气象局获取天气信息,就需要订阅气象局的天气消息,这里假如把气象局作为消息生产者,那么新浪,百度,QQ则当做消费者,
1)新建一个常量类,维护基本的队列信息和Exchange
public class RabbitConstant {
public static final String QUEUE_HELLOWORLD = "helloworld";
public static final String QUEUE_SMS = "s