Реализация прослушивателя пула MDB в JBoss JMS - PullRequest
1 голос
/ 21 ноября 2011

У меня есть приложение, развернутое в JBoss, с несколькими MDB, развернутыми с использованием реализации JBoss JMS, каждое из которых имеет свою конфигурацию размера пула MDB.Я с нетерпением ждал какого-то механизма, где у нас может быть прослушиватель для каждого размера пула MDB, где мы можем проверить, используются ли в любой момент все экземпляры из пула MDB.Это поможет в анализе и настройке соответствующего размера пула MDB для каждого MDB.

1 Ответ

1 голос
/ 05 марта 2012

Мы используем 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.

...