Publish/Subscribe —— RabbitMQ七种工作模式之三

官网地址:www.rabbitmq.com/tutorials/t…

publish subscribe.png

如图,发布者P将消息通过交换机X分发给所有队列,每个订阅者获取等量全部的消息。简单模式与工作队列模式无需关心交换机,因为发布者和订阅者之间只有一个队列。而发布订阅模式有了多个队列,所以只需要引入交换机用于分发消息给队列即可。如示例代码所示,发布者需要定义交换机,订阅者将自己定义的队列和发布者的交换机绑定即可。

为了防止增加理解成本,以下示例代码仅给出了 “Hello World!” 简单模式下的微小修改

生产者

    // 四个参数
    // exchange 交换机
    // 队列名称
    // 额外的设置属性
    // 传递的消息字节数组
    
    // 简单模式:交换机为空,定义了队列名称
    // channel.basicPublish("", RabbitConstant.QUEUE_HELLOWORLD, null,message.getBytes());
    
    // Pub/Sub模式:交换机必填,队列必空(队列由订阅者自定义)
    channel.basicPublish(RabbitConstant.EXCHANGE_WEATHER,"" , null , message.getBytes());
复制代码

消费者

    // queueBind用于将自定义的队列与交换机绑定
    // 参数1:队列名 参数2:交互机名  参数三:路由key(发布订阅用不到)
    channel.queueBind(RabbitConstant.QUEUE_BAIDU, RabbitConstant.EXCHANGE_WEATHER, "");
复制代码

定义交换机

发布者和订阅者可以自由定义队列,当RabbitMQ服务器没有时可以自动创建,但是交换机需要手动创建。登陆RabbitMQ控制台,创建如下:

image.png
交换机类型(Type)选择定向模式(direct)或者广播模式(fanout)均可。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享