寻找systemUsage和destinationPolicy配置的一些帮助,因为我很难完全理解systemUsage,destinationPolicy和流控制之间的关系.
我们所有的消息都是持久的 producerFlowControl已启用.
所以我们给ActiveMQ说最大512MB的堆空间.
我们的systemUsage设置如下:
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="200 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="10 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="1000 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
Run Code Online (Sandbox Code Playgroud)
我们的目的地政策如下:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb">
<pendingSubscriberPolicy>
</pendingSubscriberPolicy>
</policyEntry>
<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
Run Code Online (Sandbox Code Playgroud)
任何人都可以验证以下是否正确:
这意味着对于每个单独的队列/主题,内存限制为1MB.当这个1MB命中时,究竟会发生什么,生产者的队列阻止还是翻页?
所有队列和主题的总允许内存为200MB.这意味着我们可以拥有200个以1MB的全容量运行的通道.我们目前总共有16个队列和主题,所以显然从未达到过.
我们是否更好地删除内存限制上的单个策略条目并在各个通道之间共享内存?
如果我们这样做会阻止他们?
非常感谢任何帮助!可以Paypal你一些啤酒钱!
我们希望使用XA事务来协调ActiveMQ和Hibernate(Sql Server 2008)之间的活动.
我们正在使用:
我们发现在与事务相关的日志文件中生成的以下错误尚未启动.这些始终与JMS相关.
交易'[ID]'尚未开始.
这些都会一直生成到日志中.
问题更复杂,因为我们有3个Web应用程序使用相同的JMS队列,并且当只有一个Web应用程序运行时似乎不会生成错误.
它们被部署为在同一台机器上运行的Tomcat 7.0.14的单独实例.
2011-05-31 15:04:27,065 [Atomikos:30] WARN - [com.atomikos.diagnostics.Slf4jConsole] : XA resource 'XAJMS': rollback for XID '3139322E3136382E302E35332E746D30363636333030303031:3139322E3136382E302E35332E746D36363633' raised 0: unknown
javax.transaction.xa.XAException: Transaction 'XID:1096044365:3139322e3136382e302e35332e746d30363636333030303031:3139322e3136382e302e35332e746d36363633' has not been started.
at org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:732)
at org.apache.activemq.TransactionContext.rollback(TransactionContext.java:497)
at com.atomikos.datasource.xa.XAResourceTransaction.rollback(XAResourceTransaction.java:690)
at com.atomikos.icatch.imp.RollbackMessage.send(RollbackMessage.java:72)
at com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:111)
at com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:87)
at com.atomikos.icatch.imp.Propagator.submitPropagationMessage(Propagator.java:66)
at com.atomikos.icatch.imp.HeurHazardStateHandler.onTimeout(HeurHazardStateHandler.java:124)
at com.atomikos.icatch.imp.CoordinatorImp.alarm(CoordinatorImp.java:1105)
at com.atomikos.timing.PooledAlarmTimer.notifyListeners(PooledAlarmTimer.java:112)
at com.atomikos.timing.PooledAlarmTimer.run(PooledAlarmTimer.java:99)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.transaction.xa.XAException: Transaction 'XID:1096044365:3139322e3136382e302e35332e746d30363636333030303031:3139322e3136382e302e35332e746d36363633' has not been started.
at …Run Code Online (Sandbox Code Playgroud)