在我的工作中,几乎每五分钟就会有人赞扬MQ Series、MSMQ或类似产品的优点,当这些炫酷的术语消失后,我总是想知道这些神奇的设备在现实世界中的一些实际应用 例子。
我希望找到一些能够激发我使用其中之一的用途,或者给我某种度量标准,以便评估消息总线/消息代理/消息队列,甚至能解释上述消息* 事物之间的区别的东西。
在我的工作中,几乎每五分钟就会有人赞扬MQ Series、MSMQ或类似产品的优点,当这些炫酷的术语消失后,我总是想知道这些神奇的设备在现实世界中的一些实际应用 例子。
我希望找到一些能够激发我使用其中之一的用途,或者给我某种度量标准,以便评估消息总线/消息代理/消息队列,甚至能解释上述消息* 事物之间的区别的东西。
不涉及特定产品,我可以告诉您使用典型消息队列系统的一些好处。
它们通常是模拟发布者/订阅者模式的良好基础设施。想象一个大型事件系统,您不仅限于一个可执行文件,甚至不限于一台机器。您将信息放入这些队列中,以便任何正在监听它的应用程序都可以获取数据。
大多数消息队列系统允许持久化队列。想象一个典型的事件系统。如果在事件发生时,听众断开连接或无响应,则会错过该事件。通过持久消息队列,消息将保留在队列中,直到听众重新连接为止。这样就不会丢失任何数据/事件。
我不了解您列出的产品,但我知道使用JMS时,您可以对从队列中弹出的消息进行细粒度控制。理论上,您可以每个队列一个线程,在该线程中执行操作,处理被取出的消息。或者,您可以从多个队列中提取消息并在共享线程内对其执行操作。
以下是一项来自真实项目的非常“贴近需求”的例子,该项目已经运行了多年,并且使用ActiveMQ。
1)航运市场的交易中心。
船运公司拥有一个系统,可以实时知道他们可以运输多少货物。
每个系统都不同(例如:语言、设计等)
我们为每家公司编写了一个适配器,将其“非常特殊的 IT 系统”转换为 ActiveMQ。
每个适配器的工作很简单:在公司有空闲空间和价格时发布“运输建议”。
我们编写了一个客户端,收集所有“运输建议”并将它们漂亮地显示出来。
=> 哒哒声。您拥有了一个跨平台/语言/进程的系统,适用于不想相互交流的公司
=> 哒哒声2:如果新公司想要加入您的贸易系统,他们只需要编写适配器即可。