我正在尝试首次设置Apache ActiveMQ
我发现我的服务器名称中有一个下划线,这阻止了ActiveMQ的启动.它抛出了这个异常:
java.net.URISyntaxException:索引8的主机名中的非法字符:ws://cms_delta.mycompany.com:61614?maximumConnections = 1000&wireFormat.maxFrameSize = 104857600)...
我在哪里可以在配置中设置主机名.此服务器具有其他别名但没有下划线,或者我可以使用IP地址.正在自动获取服务器名称cms_delta.mycompany.com.
除了brokerName之外,我在activemq.xml中看不到任何明显的东西,但是这并没有解决问题.
这是完整的日志:
2013-11-14 14:30:02,347 | INFO | Refreshing org.apache.activemq.xbean.XBeanBrokerFactory$1@54520eb: startup date [Thu Nov 14 14:30:02 PST 2013]; root of context hierarchy | org.apache.activemq.xbean.XBeanBrokerFactory$1 | main
2013-11-14 14:30:04,100 | INFO | PListStore:[/opt/apache-activemq-5.9.0/data/esb-dev.mycompany.com/tmp_storage] started | org.apache.activemq.store.kahadb.plist.PListStoreImpl | main
2013-11-14 14:30:04,154 | INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[/opt/apache-activemq-5.9.0/data/kahadb] | org.apache.activemq.broker.BrokerService | main
2013-11-14 14:30:04,475 | INFO | Persistence store purged. | org.apache.activemq.store.kahadb.MessageDatabase | main
2013-11-14 14:30:04,678 | INFO | Apache ActiveMQ 5.9.0 (esb-dev.mycompany.com, ID:cms_delta.mycompany.com-35039-1384468204550-0:1) …Run Code Online (Sandbox Code Playgroud) 根据ActiveMQ 站点上的此配置页面,该connection.sendTimeout属性为:
等待Message Sends for a Response 的时间,默认值零表示永远等待。如果它是一个快速的生产者或者没有消费者,那么永远等待允许代理对来自这个客户端的消息进行流量控制,这样如果代理没有减慢生产者的速度,代理就会耗尽内存。不影响 Stomp 客户端,因为代理已确认发送。(自 ActiveMQ-CPP 2.2.1 起)
我很难解释这意味着什么(以及sendTimeout财产的真正含义/它的作用):
提前致谢!
我正在尝试使用C++编写的一些功能来与位于Linux机器上的Apache ActiveMQ(本机使用JMS)进行通信.为了建立这种连接,我试图在我的Windows 7机器(开发机器)上设置Apache ActiveMQ-CPP,但我目前面临一些重大问题.
据我了解ActiveMQ的-CPP具有依赖于Apache的便携式运行/ APR,如前所述这里.我的问题是,我甚至无法构建APR,因此无法开始使用ActiveMQ-CPP.我已经按照本指南的说法,在并行目录中设置,将版本名称重命名为标准名称,并将启动项目更改为libaprutil(使用动态库),但没有任何运气.在构建APR解决方案时,27个项目中只有13个成功.我也尝试使用静态aprutil项目构建解决方案作为启动项目,但没有任何改进.
解决方案是确保为Visual Studio 6提供更广泛的兼容性,因此我怀疑使用Visual Studio 2010来解决我的问题.即使升级项目应该是可能的(如APR文档所述),在使用升级助手并尝试构建整个解决方案之后,我有几个(我认为是)缺少项目中的依赖项,请参阅第1个screendump.许多错误与文件iconv_module.obj(error LNK2019: unresolved external symbol xxx referenced in function _iconv_getpath C:\work\apr-iconv\iconv_module.obj)有关,如下面的工具提示所示C:\work\apr-iconv.该文件实际上位于不同的子文件夹中,具体取决于构建格式(我选择了"Release"和"Win32"),但我不确定这是否实际上是一个问题.
我应该提一下,我对C++完全不熟悉并且对C的经验非常有限,所以也许只是手动链接我不理解的依赖...如果打开所提到的文件并查看所述的函数然而,错误消息,代码显然也是错误的,所以也许它不是依赖关系,请看两个screendump.
关于可能的解决方案我被建议尝试手动一次构建每个项目,而不是一次完成整个解决方案,因此首先构建不依赖于任何内容的库,依此类推.然而,这也没有成功.
也应该可以使用命令行来构建项目,这对某些人来说就是技巧(链接).在新版本的Visual Studio中,"msdev"似乎被"devenv"所取代,但是考虑到这一点,构建仍然会在使用查找和替换之后抱怨"找不到msdev"......也许不是最好的解决方法,对吧?
在搜索有类似问题的帖子时,我肯定并不孤单,但不幸的是,没有一个建议的解决方案能为我做到这一点.有些我看着帖子是:编译Apache APR在Windows和ActiveMQ的-CPP和Visual Studio 2003.
您是否有任何使用较新版本的Visual Studio或Windows命令行构建APR的经验?或者更重要的是,让ActiveMQ-CPP在Windows上运行?
截图:

我们希望我们的运行cms::MessageConsumer,并cms::MessageProducer在不同的同一进程的线程.
我们如何安全地做到这一点?
是否有两个cms::Connection物体和两个cms::Session物体,一个用于消费者和生产者,足以保证安全?这有必要吗?
静态库级别的对象之间是否存在共享状态会阻止此类用法?
有没有办法知道特定消息被重新传递了多少次?
有getCMSRedelivered()类的方法cms::Message,可以正常工作,但返回一个布尔值.还有getRedeliveryCounter()类的方法activemq::core::commands::Message,但这是一个内部类,我宁愿不直接访问.
谢谢.
ActiveMQ CPP和Visual Studio 2003
我有一个要求让AMQ使用一些需要VS 7.1的代码,但是我很难获得它和使用VS 7.1构建的各种Apache库如apr等.有一个针对AMQ-CPP的vs2008解决方案/项目,我已将其用作模板,并尝试为VS 7.1创建一个,
但是在尝试构建时,我会收到如下错误:
"\amq\activemq-cpp-library-3.4.1\src\main\activemq\util\primitivemap.cpp(70): fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'f:\vs70builds\3077\vc\Compiler\Utc\src\P2\main.c', line 148)"
Run Code Online (Sandbox Code Playgroud)
总之,有没有人能够使用VS 7.1构建并成功运行AMQ?是否支持编译器?
我已经浏览了常见问题解答(没有找到任何表明方式或其他方式)并在他们的ML上发布了问题,但无济于事.
任何信息或链接都会很棒.