void send()

in log4j-jakarta-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java [470:512]


    void send(final LogEvent event, final Layout layout) {
        if (messageProducer == null) {
            if (reconnector != null && !configuration.isImmediateFail()) {
                reconnector.latch();
                if (messageProducer == null) {
                    throw new AppenderLoggingException(
                            "Error sending to JMS Manager '" + getName() + "': JMS message producer not available");
                }
            }
        }
        synchronized (this) {
            try {
                createMessageAndSend(event, layout);
            } catch (final JMSException causeEx) {
                if (configuration.isRetry() && reconnector == null) {
                    reconnector = createReconnector();
                    try {
                        closeJndiManager();
                        reconnector.reconnect();
                    } catch (NamingException | JMSException reconnEx) {
                        logger().debug(
                                        "Cannot reestablish JMS connection to {}: {}; starting reconnector thread {}",
                                        configuration,
                                        reconnEx.getLocalizedMessage(),
                                        reconnector.getName(),
                                        reconnEx);
                        reconnector.start();
                        throw new AppenderLoggingException(
                                String.format("JMS exception sending to %s for %s", getName(), configuration), causeEx);
                    }
                    try {
                        createMessageAndSend(event, layout);
                    } catch (final JMSException e) {
                        throw new AppenderLoggingException(
                                String.format(
                                        "Error sending to %s after reestablishing JMS connection for %s",
                                        getName(), configuration),
                                causeEx);
                    }
                }
            }
        }
    }