【问题标题】:What kind of message formats are usually being exchanged in Message Queueing Systems?消息队列系统中通常交换什么样的消息格式?
【发布时间】:2013-11-05 11:09:51
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 但是队列怎么知道哪个消息是给哪个收件人的呢?
    • en.wikipedia.org/wiki/Message_queue#Usage .. 消息侦听器注册到队列并在消息到达队列时收到通知。路由策略可用于复杂情况。
    • 我阅读了链接。它太模糊了。注册的侦听器是否会收到特定类型消息的通知?我认为放置在队列中的消息以某种方式发送给特定的收件人(例如IP?)
    • MQ 用于通常在组织下的一台机器或一组机器内进行进程间通信。例如,一个典型的例子是一个应用程序可能会通知 MQ 发生金融交易的消息。这些消息稍后由报告应用程序异步处理以生成报告。
    • 所以这些消息没有针对特定的收件人?它是关于一个主题的?我认为这就是您在示例中描述的内容,对吗?
    【解决方案2】:

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

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

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

    【讨论】:

    • 所以消息是 XML,但不是直接使用 SOAP 或 REST,而是使用这些系统,以便不必实现您在 SOAP 或 REST 服务器中提到的容错、平衡等?跨度>
    • 是的,如果我们只谈论 MQ,我会说这是主要原因。但如果不仅使用 MQ,还使用完整的 ESB,那么这个 ESB 还可以自己执行一些业务逻辑(通常是消息转换)。
    • 其实这个话题已经够宽泛了,因为MQ的软件很多,各有特色。一般来说,MQ 让您可以轻松地集成软件,无论它意味着什么 :) 例如,IBM WebSphere MQ 几乎支持从大型机到嵌入式系统的任何平台,因此它可能仅用于将旧大型机集成到现代应用程序堆栈。
    • 假设您有两个应用程序:人力资源和会计。他们需要交换因生病而缺勤的员工的数据。您可以点对点集成它们(使用 Web 服务或其他方式),但是您必须自己考虑容错能力——如果一个应用程序出现故障怎么办?然后另一个应用程序必须收集数据以便稍后发送。这可以由 MQ 自动且完全透明地完成。如果第三个应用程序进入需要相同数据的系统怎么办?如果使用 MQ 会容易得多 - 只需重新配置路由规则。
    猜你喜欢
    • 2011-01-18
    • 1970-01-01
    • 2013-08-23
    • 2020-09-12
    • 2012-09-22
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多