我在JBoss中部署了一个应用程序,其中使用JBoss JMS实现部署了多个MDB,每个MDB都具有不同的MDB池大小配置。我期待某种机制,我们可以在每个MDB池大小上有一个监听器,我们可以检查是否在任何时候MDB池中的所有实例都被利用。这将有助于为每个MDB分析和配置适当的MDB池大小。
答案 0 :(得分:1)
我们使用Jamon来监控MDB的实例,如下所示:
@MessageDriven
@TransactionManagement(value = TransactionManagementType.CONTAINER)
@TransactionAttribute(value = TransactionAttributeType.REQUIRED)
@ResourceAdapter("wmq.jmsra.rar")
@AspectDomain("YourDomainName")
public class YourMessageDrivenBean implements MessageListener
{
// jamon package constant
protected static final String WB_ONMESSAGE = "wb.onMessage";
// instance counter
private static AtomicInteger counter = new AtomicInteger(0);
private int instanceIdentifier = 0;
@Resource
MessageDrivenContext ctx;
@Override
public void onMessage(Message message)
{
final Monitor monall = MonitorFactory.start(WB_ONMESSAGE);
final Monitor mon = MonitorFactory.start(WB_ONMESSAGE + "." + toString()
+ "; mdb instance identifier=" + instanceIdentifier);
try {
// process your message here
}
} catch (final Exception x) {
log.error("Error onMessage " + x.getMessage(), x);
ctx.setRollbackOnly();
} finally {
monall.stop();
mon.stop();
}
}
@PostConstruct
public void init()
{
instanceIdentifier = counter.incrementAndGet();
log.debug("constructed instance #" + instanceIdentifier);
}
}
然后,您可以在Jamon-Monitor中看到每个创建的MDB实例。