/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.transport.jms; import javax.jms.Message; import javax.jms.MessageListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.opengamma.transport.ByteArrayMessageReceiver; import com.opengamma.util.ArgumentChecker; /** * A message dispatcher that uses JMS. * <p> * This is a simple implementation based on JMS. */ public class JmsByteArrayMessageDispatcher implements MessageListener { /** Logger. */ private static final Logger s_logger = LoggerFactory.getLogger(JmsByteArrayMessageDispatcher.class); /** * The underlying message receiver. */ private final ByteArrayMessageReceiver _underlying; /** * Creates an instance based on a message receiver. * * @param underlying the underlying message receiver, not null */ public JmsByteArrayMessageDispatcher(final ByteArrayMessageReceiver underlying) { ArgumentChecker.notNull(underlying, "underlying"); _underlying = underlying; } //------------------------------------------------------------------------- /** * Gets the underlying message receiver. * * @return the underlying message receiver */ public ByteArrayMessageReceiver getUnderlying() { return _underlying; } //------------------------------------------------------------------------- @Override public void onMessage(final Message message) { try { final byte[] bytes = JmsByteArrayHelper.extractBytes(message); s_logger.debug("Dispatching byte array of length {}", bytes.length); getUnderlying().messageReceived(bytes); } catch (RuntimeException e) { s_logger.error("Caught exception dispatching message", e); throw e; } } }