【问题标题】:Efficient local transport for ActiveMQ brokerActiveMQ 代理的高效本地传输
【发布时间】:2015-02-12 21:42:10
【问题描述】:

我有多个应用程序(生产者)产生要由另一个应用程序(消费者)处理的消息。消息将通过在同一台服务器上运行的 ActiveMQ 代理发送。我无权访问应用程序的代码,因此将通过执行脚本生成消息(我目前不知道要使用哪种语言)。消费者将是处理接收到的消息的 Java 应用程序。

我正在寻找适合我用例的高效传输方式。此处不能使用 VM 传输。另外,我想避免每次执行生产者脚本时都打开与代理的 TCP 连接(即我想避免使用 TCP 传输)。我认为 UDP 可能是一个不错的选择,除非您知道另一种更合适的传输方式。

谢谢, 迈克尔

【问题讨论】:

    标签: activemq


    【解决方案1】:

    TCP and UDP 协议各有利弊

    1)如果消息的顺序和消息的可靠传递对您来说并不重要,那么 UDP 可能是一个不错的选择,而且在 UDP 中,也可能会发生重复消息被传递给代理的情况。

    2)使用 TCP 提供可靠的消息传递和排序,但是如果你想消除 TCP 的流传输延迟,那么你可能会反对它。

    还有其他几个,您可以根据自己的要求进行回顾

    • NIO 协议(用于高流量需求的情况)
    • HTTP 协议(​​如果您想绕过防火墙)

    希望这会有所帮助!

    祝你好运!

    【讨论】:

    • 在我的情况下,顺序并不重要。可靠性很重要,但在服务器内部使用 UDP 应该足够好。但是,我没有找到使用脚本语言(例如 Perl、Python、Shell...)在 UDP 传输上生成消息的方法。有一些库可用于 Perl 和 Python,但它们使用 STOMP 传输。
    • 真的不知道可用的库,但只是一个想法.. 你不能使用 Java 吗?
    • 我认为 Java 对于我想做的事情来说太重了。生产者应用程序代码无法修改,但每次我需要生成消息时它们都可以执行命令。因此,我想写一个脚本来发送消息。当然,该命令可能包括执行一个 Java 应用程序,但该命令会被非常频繁地调用,我认为每次必须发送消息时启动 JVM 并不是一个好主意。
    • 哦,然后找到一些图书馆似乎是唯一的出路
    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 2021-10-09
    • 2011-04-16
    • 1970-01-01
    • 2013-07-11
    • 2011-02-14
    • 2013-08-26
    • 1970-01-01
    相关资源
    最近更新 更多