2012-01-30 110 views
3

我想运行activemq代理vm://协议作为独立应用程序,并从位于不同JVM实例中的程序向其队列发送消息。可能吗?它会起作用吗?VM协议是否支持两个JVM?

This Documentation中明确指出:

“内同一JVM彼此在JVM内部沟通”,但没有任何意义,我在所有:)场景我们拥有外部JMS代理(位于同一台计算机上)以及运行在不同JVM(例如Tomcat)中的客户端并不罕见。 Active-MQ文档根本没有帮助我,因为他们可能认为解决我的问题是显而易见的,因此我的困惑。

在此先感谢。

+0

为什么没有道理?只需使用支持网络的不同协议即可,文档列出了其中三个协议。 'vm://'协议不适合你的用例。 – millimoose 2012-01-30 14:32:19

+0

好吧,对我来说没有太多的意义,不要在ActiveMq的文档中说清楚。我最终在一些完全不相关的网站上寻找这些信息,所以我想这就是为什么我迷路了。 你有哪些其他运输?对不起,我在文档中找不到它。 – 2012-01-30 14:45:43

+0

看起来ActiveMq模型似乎只有API文档,并且作者将其出售作为主要深入参考。如果您打算使用ActiveMq,您可能希望雇主购买该书。其他协议位于链接到的同一站点上:[OpenWire](http://fusesource.com/docs/broker/5.5/connectivity_guide/FMBConnectOpenwireIntro.html)(默认),[Stomp](http:// fusesource .com/docs/broker/5.5/connectivity_guide/FMBConnectivityStompIntro.html)和[REST](http://fusesource.com/docs/broker/5.5/connectivity_guide/FMBConnectRestIntro.html) – millimoose 2012-01-30 14:52:31

回答

2

我曾尝试以下设置:

  1. 独立ActiveMQ代理
  2. 简单的Java生产者 - 消费者方案单独的JVM

跑到他们都使用vm://test经纪人。

结论

标识并不重要ActiveMQ代理是否正在运行。在这两种情况下,我的简单示例运行得很顺畅 - 它创建了VM代理,当JVM与我的程序一起关闭时,它已被丢弃。

这意味着,真正的VM代理只运行在一个JVM中,并且不能从其他JVM访问,至少使用最简单的配置。