消息代理RabbitMQ——实施篇

本文介绍了RabbitMQ的四种接口:Fanout、Direct、Topic和RPC的实现细节。通过B/S架构设计,展示了如何使用这些接口进行消息的发布和消费。在测试环节,详细阐述了每种接口的预期效果和实际运行情况,帮助读者理解不同发布订阅策略的特性。


1系统设计

本此实施采用B/S架构设计模式进行开发。但是不同的是,我们除了测试的时候需要用到前段界面的Ajax异步代码,其他时候并没有前端存在的意义。

Fanout接口,生产者的接口指定为4个参数,islastingmessageexchangequeue。其中islasting参数为boolean类型变量,表示传递的消息是否持久化于队列中。message即为需要传递消息的字符串类型变量。exchange为我们发布消息所用到的转换器。queue表示消息需要发布到的指定的队列名。而对于消费者的入口参数和生产者唯一不同的是,没有message参数。因为我们只要确定了其他三个参数,便可得到对应的消息。

Direct接口,生产者的接口指定为5个参数,islastingmessageexchangequeuebinding。前面四个参数与Fanout相同,binding代表的是“绑定”。只有生产者发布了一条消息,并且用binding变量进行约束以后,消费者同样用binding进行约束,才能接收到消息。这种方式是一种定向型的发布订阅方式,但只有单一消费者的情况下,其效果和Fanout相同。但是有多个消费者的情况下,所有具有相同binding约束的消费者都会收到同样的消息,这就是生活中的群发概念的实现。消费者接口同上。

Topic接口,生产者的接口指定为5个参数,islastingmessageexchangequeuematchingmatching在生产者中和消费者中的含义不同。在生产者中,表示一个完全标识,例如发布一条标识为“news.orange”的消息,“news.orange”即代表matching。在消费者中,该变量标识一种模式匹配,即消费者可以用值为“news.*”的变量接收所有以“news.”标识开头的消息进行消费。这是一个需要区分的地方。

RPC接口,该类型接口不涉及生产者的接口,因为生产者同时可以认为是消费者,或者说生产者不可见。该类型的功能描述的是消费者需要获得某种数据,但是没有生产者为其提供,但又不得不需要。所以通过远程调用的方式通知生产者发布一条自己需要的数据并返回,通过这种方式消费消息。其参数可以简化为1个,即需要生产者加工的数据源。以Fanout为例:

  &nb

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值