Class JmsManager

java.lang.Object
org.apache.logging.log4j.core.appender.AbstractManager
org.apache.logging.log4j.core.appender.mom.JmsManager
All Implemented Interfaces:
AutoCloseable

public class JmsManager extends AbstractManager
Consider this class private; it is only public for access by integration tests.

JMS connection and session manager. Can be used to access MessageProducer, MessageConsumer, and Message objects involving a configured ConnectionFactory and Destination.

  • Method Details

    • getJmsManager

      public static JmsManager getJmsManager(String name, Properties jndiProperties, String connectionFactoryName, String destinationName, String userName, char[] password, boolean immediateFail, long reconnectIntervalMillis)
      Gets a JmsManager using the specified configuration parameters.
      Parameters:
      name - The name to use for this JmsManager.
      connectionFactoryName - The binding name for the ConnectionFactory.
      destinationName - The binding name for the Destination.
      userName - The userName to connect with or null for no authentication.
      password - The password to use with the given userName or null for no authentication.
      immediateFail - Whether or not to fail immediately with a AppenderLoggingException when connecting to JMS fails.
      reconnectIntervalMillis - How to log sleep in milliseconds before trying to reconnect to JMS.
      jndiProperties - JNDI properties.
      Returns:
      The JmsManager as configured.
    • createMessage

      public javax.jms.Message createMessage(Serializable object) throws javax.jms.JMSException
      Creates a TextMessage, MapMessage, or ObjectMessage from a Serializable object.

      For instance, when using a text-based Layout such as PatternLayout, the LogEvent message will be serialized to a String.

      When using a layout such as SerializedLayout, the LogEvent message will be serialized as a Java object.

      When using a layout such as MessageLayout and the LogEvent message is a Log4j MapMessage, the message will be serialized as a JMS MapMessage.

      Parameters:
      object - The LogEvent or String message to wrap.
      Returns:
      A new JMS message containing the provided object.
      Throws:
      javax.jms.JMSException - if the JMS provider fails to create this message due to some internal error.
    • createMessageConsumer

      public javax.jms.MessageConsumer createMessageConsumer() throws javax.jms.JMSException
      Creates a MessageConsumer on this Destination using the current Session.
      Returns:
      A MessageConsumer on this Destination.
      Throws:
      javax.jms.JMSException - if the session fails to create a consumer due to some internal error.
    • createMessageProducer

      public javax.jms.MessageProducer createMessageProducer(javax.jms.Session session, javax.jms.Destination destination) throws javax.jms.JMSException
      Creates a MessageProducer on this Destination using the current Session.
      Parameters:
      session - The JMS Session to use to create the MessageProducer
      destination - The JMS Destination for the MessageProducer
      Returns:
      A MessageProducer on this Destination.
      Throws:
      javax.jms.JMSException - if the session fails to create a MessageProducer due to some internal error.
    • getJmsManagerConfiguration

      public JmsManager.JmsManagerConfiguration getJmsManagerConfiguration()
    • releaseSub

      protected boolean releaseSub(long timeout, TimeUnit timeUnit)
      Description copied from class: AbstractManager
      May be overridden by managers to perform processing while the manager is being released and the lock is held. A timeout is passed for implementors to use as they see fit.
      Overrides:
      releaseSub in class AbstractManager
      Parameters:
      timeout - timeout
      timeUnit - timeout time unit
      Returns:
      true if all resources were closed normally, false otherwise.