2014-01-23 51 views
0

我们准备部署两个JEE6应用程序。部分应用程序将耗尽云并产生消息给JMS队列。应用程序的另一半将在我们的服务器上运行,并使用来自JMS队列的消息。应用程序的这两个部分都作为单独的战争运行,并部署到Apache TomEE 1.6(这是很棒的顺便说一句),并使用最新的JEE和CDI规范编写。Apache ActiveMQ/TomEE帮助:如何将嵌入式代理配置为存储转发?

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

读完ActiveMQ文档后,我很确定我们需要的是存储转发体系结构。他们的文档有点朦胧是属性http://activemq.apache.org/vm-transport-reference.html转化为创建这种架构的方式。

最后的挑战是当地经纪人需要非常快。它不仅会从远程队列中消费消息,还会有几个队列在本地进行写入和读取。幸运的是,本地经纪人制作的任何队列不需要在本地任何地方消费。消息必须是持久的。 ...如果我设法做到这一点,我需要弄清楚如何运行双向SSL!

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

回答

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。您可以通过在箱中的setenv.sh /并把这样做如下:

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

现在...找出SSL。希望这可以帮助别人!

+0

它有帮助。感谢分享! – dajood