官网地址:www.rabbitmq.com/tutorials/t…
如图,发布者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控制台,创建如下:
交换机类型(Type)选择定向模式(direct)或者广播模式(fanout)均可。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END