Apache ActiveMQ / TomEE帮助:如何将嵌入式代理配置为存储转发?

时间:2014-01-23 16:00:36

标签: java java-ee jms activemq tomee

我们准备部署两个JEE6应用程序。部分应用程序将耗尽云并向JMS队列生成消息。应用程序的另一半将在我们的服务器上运行并使用来自JMS队列的消息。应用程序的两个部分都作为单独的战争运行,并部署到Apache TomEE 1.6(这是非常棒的btw),并使用最新的JEE和CDI规范编写。

消息持久性是我们主要关注的问题,但我们愿意假设云应用程序将有100%的正常运行时间并手动处理异常情况。本地应用程序将经常重启,因为我们正在改进它的设计并进行大量更改。

在阅读ActiveMQ文档后,我非常确定我们想要的是存储转发架构。他们的文档有点朦胧是属性http://activemq.apache.org/vm-transport-reference.html如何转化为创建这种架构。

最后的挑战是本地经纪人需要非常快。它不仅会消耗远程队列中的消息,还会在本地写入和读取多个队列。幸运的是,本地代理上生成的任何队列都不需要在本地使用。但消息必须是持久的。 ......如果我设法做到这一点,我需要弄清楚如何运行双向SSL !!

TLDR是我的两件事:示例URL配置让我开始,或者建议ActiveMQ中的哪些选项比我上面说的更好。谢谢!

1 个答案:

答案 0 :(得分:1)

经过8个小时的艰苦实验,结果证明这并不困难。它只是记录在案或非常清楚......我在其中一个主机上启用了ipv6,导致了各种各样的问题。

在“云”服务器上,您将使用此

<Resource
    id="MyJmsResourceAdapter"
    type="ActiveMQResourceAdapter">
    BrokerXmlConfig = broker:(tcp://0.0.0.0:61617,network:static:tcp://ground.server.com:61617)?persistent=false
    ServerUrl = vm://localhost 
</Resource>

在“地面”服务器上,

<Resource
    id="MyJmsResourceAdapter"
    type="ActiveMQResourceAdapter">
    BrokerXmlConfig = broker:(tcp://0.0.0.0:61617,network:static:tcp://cloud.server.com:61617)?persistent=false
    ServerUrl = vm://localhost 
</Resource>

最后,在Apache TomEE中的JAVA_OPTS中禁用ipv6。您可以通过在bin /中创建setenv.sh并执行以下操作来完成此操作:

export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"

现在......找出SSL。希望这有助于某人!