配置Geronimos MDB InstanceLimit
我不能够配置Geronimo的/ ActiveMQ的让超过10条消息一次过处理。配置Geronimos MDB InstanceLimit
我尝试了这个mailing list, 的建议,但将maxSessions
设置为高于10的值并没有任何效果。将其设置为较低的东西比有效果,但...
而且I'tried通过设置来设置InstanceLimit
:
<module name="org.apache.geronimo.configs/j2ee-server/2.1.4/car"> <gbean name="org.apache.geronimo.configs/j2ee-server/2.1.4/car?ServiceModule=org.apache.geronimo.configs/j2ee-server/2.1.4/car,j2eeType=GBean,name=CustomPropertiesGBean"
gbeanInfo="org.apache.geronimo.system.properties.SystemProperties">
<attribute name="systemProperties">Default\ MDB\ Container.InstanceLimit=50</attribute>
</gbean>
</module>
回答:
好吧,我终于得到了它!这是一个冗长的解释,希望能帮助别人。
与these examples周围修修补补之后我想通了,ActiveMQ的激活参数犯规限制的上限,我们虽然可以减少并行实例:
<activation-config-property> <activation-config-property-name>destinationType</activation-config-property-name>
<activation-config-property-value>javax.jms.Queue</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>maxSessions</activation-config-property-name>
<activation-config-property-value>3</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>maxMessagesPerSessions</activation-config-property-name>
<activation-config-property-value>2</activation-config-property-value>
</activation-config-property>
所以我决定走开放源代码之路!连接所涉及的组件的所有所需的源代码后:
- Geronimo的
- ActiveMQ的
- OpenEJB的
中去了,我想通了堆栈跟踪,该InstanceLimit是GBean的属性,它是明确询问。它的缺省值是10,它在Geronimo中硬编码。通过在调试器中调用这个值,我得到了希望的结果!
但设置InstanceLimit还建议,其中建议将它添加到Geronimos config.xml中
<module name="org.apache.geronimo.configs/j2ee-server/2.1.4/car"> <gbean name="org.apache.geronimo.configs/j2ee-server/2.1.4/car?ServiceModule=org.apache.geronimo.configs/j2ee-server/2.1.4/car,j2eeType=GBean,name=CustomPropertiesGBean"
gbeanInfo="org.apache.geronimo.system.properties.SystemProperties">
<attribute name="systemProperties">Default\ MDB\ Container.InstanceLimit=50</attribute>
</gbean>
</module>
(当然用正确的版本号) 的mailing list但是这并没有任何效果。经过仔细的阅读此hint:
尝试MdbContainer的InstanceLimit属性设置为0,从而没有创建的实例相匹配的无AMQ会话使用。设置此,你需要设置为系统财产,是财产应containerId.InstanceLimit其中数据筒的格式为
<artifactId>.<Resource Group Name>-<listener interface>
如:org.apache.geronimo.configs/ActiveMQ的-ra/2.2-SNAPSHOT/car.ActiveMQ RA-一个javax.jms.MessageListener
- 的JMS RA的
<artifactId>
= artifactId的 <Resource Group Name>
- 资源组名称在创建RA<listener interface>
ü给 - 的javax.jms。消息监听在这种情况下
和检查Geronimos代码和运行状态,我想通了,它是在org.apache.geronimo.openejb.OpenEjbSystemGBean
线309寻找InstanceLimit,具有destinct ID这是在示例项目:
org.apache。 geronimo.configs/ActiveMQ的-RA/2.2.1/car.ActiveMQ RA-一个javax.jms.MessageListener
配备有这个信息,我这个做了尝试:
<module name="org.apache.geronimo.configs/j2ee-server/2.2.1/car"> <gbean name="org.apache.geronimo.configs/j2ee-server/2.2.1/car?ServiceModule=org.apache.geronimo.configs/j2ee-server/2.2.1/car,j2eeType=GBean,name=CustomPropertiesGBean"
gbeanInfo="org.apache.geronimo.system.properties.SystemProperties">
<attribute name="systemProperties">org.apache.geronimo.configs/activemq-ra/2.2.1/car.ActiveMQ\ RA-javax.jms.MessageListener.InstanceLimit=50</attribute>
</gbean>
</module>
和我工作!因此,我从调试会话中获得了使用的ID ...现在我们可以设置InstanceLimit = 0,并可以通过ActiveMQ的maxSessions
属性配置并行工作的MDB!
以上是 配置Geronimos MDB InstanceLimit 的全部内容, 来源链接: utcz.com/qa/263188.html