消息队列系统中通常会交换哪种消息格式?

时间:2013-10-26 09:16:40

标签: java java-ee networking tcp message-queue

我试图了解消息队列的基础知识。我看到有许多实现可用作MQ的库(ActiveMQ,RabbitMQ,ZeroMQ等)。支持J2EE的服务器也提供了这样的支持 我对这个主题无法理解的是,真实软件如何使用这些结构。我的意思是通常会交换什么样的消息?字符串?二进制数据?
如果我理解正确,可以配置传输协议,但通常的应用程序数据格式是什么? 这是一种新的沟通方式,例如SOAP WS或REST WS或RPC等,每个都有不同的应用程序msg格式?

2 个答案:

答案 0 :(得分:0)

通常用于应用程序集成的消息队列。在企业中,它通常用于实现ESB,但现在有更小的应用系统使用类似的模式。

关于传输的数据 - 通常是XML消息,但实际上依赖于应用程序和MQ软件 - 其中一些能够处理二进制消息,有些则不能。

例如,假设您有两个需要数据交换的应用程序。如果您使用某种消息传递软件(例如ActiveMQ)集成它们,那么它将为您提供开箱即用的路由,容错,平衡等一些好处。 您可以直接使用MQ集成应用程序,但通常使用ESB 让您能够使用Web服务:app只调用ESB的ws,对底层架构一无所知。 MQ和ESB也为您提供了抽象级别:只要保留数据交换接口,您就可以在系统中切换绝对透明的应用程序。

答案 1 :(得分:0)

MQ主要用于进程间通信,或用于同一进程内的线程间通信。它们提供异步通信协议,这意味着消息的发送方和接收方不需要同时与消息队列交互。放置在队列中的消息将被存储,直到收件人检索它们。

维基百科可以很好地介绍主题。 http://en.wikipedia.org/wiki/Message_queue#Standards_and_protocols

另外,要了解webservice和mq之间的差异,请阅读以下主题:Message Queue vs. Web Services?