在讨论Kafka和RabbitMQ之间的差异时,"哑经纪人"和"智能经纪人"在与消费者的互动中不断涌现.Kafka被描述为拥有一个愚蠢的经纪人,而RabbitMQ被认为拥有一个聪明的经纪人/愚蠢的消费者模型.
这到底是什么意思?我熟悉Kafka的基础知识以及关于RabbitMQ的更多信息.然而,RabbitMQ的哪些特性使得经纪人比Kafka更聪明?
我的任务是定义两个Web应用程序之间的通信.我决定使用JSON.在JSON中有一个根节点有多常见?
假设我们有一个汽车对象.这是JSON,其中"Car"是根节点:
{"Car": {
"Make":"Mustang",
"YearBuilt":"1999"}}
Run Code Online (Sandbox Code Playgroud)
所以现在让我们说我有一个Tire对象,因为我们正在标准化拥有根节点,所以这个也必须拥有它.
{"Tire": {"Make": "Brirdgestone", "Size":"15"}}
Run Code Online (Sandbox Code Playgroud)
将轮胎对象JSON集成到原始Car对象中可以显示它是多么笨重.
{"Car": { "Make":"Mustang",
"YearBuilt":"1999",
"Tires": "[{"Tire": {"Make": "Brirdgestone", "Size":"15"}},
{"Tire": {"Make": "Brirdgestone", "Size":"15"}},
{"Tire": {"Make": "Bridgestone", "Size":"15"}},
{"Tire": {"Make": "Brirdgestone", "Size":"15"}}
]}}
Run Code Online (Sandbox Code Playgroud)
所以在PHP中序列化,第一个轮胎的制造将是$object->Car->Tires[0]->Tire->Make
.由于根节点,那里有额外的轮胎级别.
如果Tire没有根节点,那么代码可能会更加纤薄.
{"Car": { "Make":"Mustang",
"YearBuilt":"1999",
"Tires": "[{ {"Make": "Bridgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}}]}}
Run Code Online (Sandbox Code Playgroud)
在PHP中,混淆较少,因为冗余较少:第一个轮胎的构造被称为 $object->Car->Tires[0]->Make
没有根节点有什么不好的吗?我喜欢拥有根节点,因为它的行为类似于类名,但是不必要的级别会让我感到很烦恼,并且会使遍历变得更加复杂.