【问题标题】:How can I do point-to-point messaging in Bluemix using MQ Light?如何使用 MQ Light 在 Bluemix 中进行点对点消息传递?
【发布时间】:2016-04-18 13:37:55
【问题描述】:

我想使用 MQ Light 在 Bluemix 中实现点对点消息传递。

我可以这样做吗?我不想定义主题,而是让 MQ Light 服务知道需要发送消息的目的地。

我不想使用 pub-sub 模型,而是希望将消息直接传递到目标消费者 node.js 应用程序。

我怎样才能做到这一点?

【问题讨论】:

    标签: ibm-cloud messaging mq


    【解决方案1】:

    虽然应用程序用于发送消息的地址具有主题/发布订阅样式格式,但 MQ Light API 支持在队列和发布/订阅模型中传递这些消息。可以在此处找到有关这些概念的更多详细信息:

    https://developer.ibm.com/messaging/mq-light/docs/concepts/

    总之,消息传递的方式(队列或发布/订阅)是由接收应用程序在定义要从中接收消息的目的地时选择的。如果它指定一个“共享目的地”,它将获得队列样式语义,其中目的地的每条消息将仅被传递到从该目的地接收的应用程序之一(例如,使用相同共享目的地的应用程序)。如果它不使用共享目的地,那么它将收到每条消息的自己的副本,例如发布/订阅。两种情况下的发送应用程序都是一样的。

    举个例子。如果应用程序向地址'/address/Q1'发送消息

    如果应用程序 A、B 和 C 都定义使用映射到地址“/address/Q1”的共享目标“dest1”,则发送到该地址的任何消息都将在它们之间共享(队列式传递模型),因此只有一个应用会收到每条消息。

    如果应用程序 A、B 和 C 都定义使用映射到地址“/address/Q1”的非共享目标,则所有应用程序都将接收发送到该地址的任何消息(发布/订阅风格交付模型)。

    在这两种情况下,应用程序都可以为目标设置 timeToLive,以控制在应用程序未连接时保留消息的时间长度。这在 pub/sub 和队列传递模型之间通常设置不同,但很容易由应用程序控制。

    【讨论】:

    • 如果目标是让单个/同一个应用程序的多个实例接收/发送消息,那么使用队列(共享)模型是有意义的,这样多个实例就不会收到相同的消息并将它们作为单独的消息处理。这让我想到了一个后续问题,即如果应用程序在处理过程中崩溃,MQ 如何确保消息得到处理。我已经发布了一个后续问题:stackoverflow.com/questions/36768399/…
    猜你喜欢
    • 2014-12-22
    • 1970-01-01
    • 2015-06-28
    • 2017-06-14
    • 2021-12-13
    • 1970-01-01
    • 2015-01-09
    • 2012-06-15
    • 1970-01-01
    相关资源
    最近更新 更多