Tag: message driven bean

Wildfly JMS:当消息存在时,MDB bean空闲

我在Wildfly 8.1(HornetQ)上使用捆绑的JMS实现来OCR大量文档。 我希望有一个3个MDB池,消耗队列的消息和要被OCR的文件。 每个MDB都使用Apache commons-exec启动一个进程并阻塞,直到该进程退出。 在我的测试中,我有50条JMS消息(每条消息代表一个要被OCR的文档),它们在测试开始时加载到队列中。 处理开始时,在任何给定时间我都可以看到有3个CPU密集型OCR进程,一个由每个MDB启动和阻止。 在某些时候,在20分钟左右之后,其中一个OCR过程消失,并且在任何给定时间只有2个保持活着。 当剩余10条JMS消息时,另一个OCR进程停止,并且在任何给定时间只有1个。 最后,所有50个文档都已被OCR,并且任何OCR进程或我的应用程序都不会抛出任何exception。 我发现这种行为很奇怪,因为我希望在任何时间消耗JMS消息时都会有3个OCR进程处于活动状态(当然除外)。 如果在队列中输入时将JMS消息“分配”到MDB实例,而不是实时,则可以解释此行为。 例如,如果为每个MDB分配了大约17条消息。 根据文档大小,当其他MDB实例仍然可以使用消息时,某些MDB实例可以更早地完成并保持空闲而不消耗任何其他消息。 这是发生了什么? 如果是,是否有办法更改此设置,以便每当MDB实例完成处理消息时,都会向MDB实例分配消息? @MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = “destinationLookup”, propertyValue = “queue/csrOcrQueue”), @ActivationConfigProperty(propertyName = “minSession”, propertyValue = “3”), @ActivationConfigProperty(propertyName = “maxSession”, propertyValue = “3”) }) @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) public class OcrMessageListener implements MessageListener {

使JBoss EAP 5.1中的特定MDB可配置maxSession属性

如何为MDB用户配置maxSession值? 有一个MDB可以侦听来自特定队列的消息。 它被定义为注释。 @ActivationConfigProperty(propertyName = “maxSession”, propertyValue = “5”) 。 为了更改maxSession的值,必须每次都编译代码。 有没有办法让用户可配置,以便不需要构建,也无需重新启动jboss? 请帮助。

EJB和线程

据我所知,从EJB中生成线程是非法的,因为它可能会干扰EJB的生命周期。 但是,使用JDK中的预定义Java类是非法的,它在内部生成并处理EJB中的Executor等线程,特别是MDB?

在部署时更改主题读取MDB的激活配置

我觉得这应该很容易。 只是RTM然后去。 但我找不到我需要的信息。 问:我可以在部署时更改@ActivationConfigProperty的值而无需编写任何XML吗? 更多详情 我有一个使用@MessageDriven注释的MDB。 其中包含许多配置它的@ActivationConfigProperty注释。 @MessageDriven(mappedName = “jms/TestJeremyTopic “, activationConfig = { @ActivationConfigProperty(propertyName = “acknowledgeMode”, propertyValue = “Auto-acknowledge”), @ActivationConfigProperty(propertyName = “destinationType”, propertyValue = “javax.jms.Topic”), @ActivationConfigProperty(propertyName = “subscriptionDurability”, propertyValue = “Durable”), @ActivationConfigProperty(propertyName = “clientId”, propertyValue = “TopicReaderBeanClientId”), @ActivationConfigProperty(propertyName = “subscriptionName”, propertyValue = “TopicReaderBeanSubscriptionName”) }) public class TopicReaderBean implements MessageListener { // … 我需要多次部署此MDB,每次都引用不同的主题。 在部署时(WebSphere […]

配置MDB以侦听多个队列

我正在使用EJB 3.1,我想配置一个MDB来监听多个队列。 我更喜欢通过XML定义队列名称,而通过注释定义其他定义。 可以这样做吗?