@@ -123,7 +123,7 @@ public class AmqpAppender extends AbstractAppender {
123123 /**
124124 * The template.
125125 */
126- private RabbitTemplate rabbitTemplate ;
126+ private final RabbitTemplate rabbitTemplate = new RabbitTemplate () ;
127127
128128 /**
129129 * Where LoggingEvents are queued to send.
@@ -256,12 +256,18 @@ public static AmqpAppender createAppender(// NOSONAR NCSS line count
256256 * Submit the required number of senders into the pool.
257257 */
258258 private void startSenders () {
259+ this .rabbitTemplate .setConnectionFactory (this .manager .connectionFactory );
259260 if (this .manager .async ) {
260- this .manager .senderPool = Executors .newCachedThreadPool ();
261261 for (int i = 0 ; i < this .manager .senderPoolSize ; i ++) {
262262 this .manager .senderPool .submit (new EventSender ());
263263 }
264264 }
265+ else if (this .manager .maxSenderRetries > 0 ) {
266+ RetryTemplate retryTemplate = new RetryTemplate ();
267+ RetryPolicy retryPolicy = new SimpleRetryPolicy (this .manager .maxSenderRetries );
268+ retryTemplate .setRetryPolicy (retryPolicy );
269+ this .rabbitTemplate .setRetryTemplate (retryTemplate );
270+ }
265271 }
266272
267273 @ Override
@@ -287,22 +293,6 @@ protected Message postProcessMessageBeforeSend(Message message, Event event) {
287293 }
288294
289295 protected void sendEvent (Event event , Map <?, ?> properties ) {
290- synchronized (this ) {
291- if (this .rabbitTemplate == null ) {
292- if (this .manager .activateOptions ()) {
293- this .rabbitTemplate = new RabbitTemplate (this .manager .connectionFactory );
294- if (!this .manager .async && this .manager .maxSenderRetries > 0 ) {
295- RetryTemplate retryTemplate = new RetryTemplate ();
296- RetryPolicy retryPolicy = new SimpleRetryPolicy (this .manager .maxSenderRetries );
297- retryTemplate .setRetryPolicy (retryPolicy );
298- this .rabbitTemplate .setRetryTemplate (retryTemplate );
299- }
300- }
301- else {
302- throw new AmqpException ("Cannot create template" );
303- }
304- }
305- }
306296 LogEvent logEvent = event .getEvent ();
307297 String name = logEvent .getLoggerName ();
308298 Level level = logEvent .getLevel ();
@@ -368,7 +358,7 @@ protected void doSend(Event event, LogEvent logEvent, MessageProperties amqpProp
368358 message = new Message (msgBody .toString ().getBytes (), amqpProps ); //NOSONAR (default charset)
369359 }
370360 message = postProcessMessageBeforeSend (message , event );
371- this .rabbitTemplate .send (this .manager .exchangeName , routingKey , message ); // NOSONAR (sync)
361+ this .rabbitTemplate .send (this .manager .exchangeName , routingKey , message );
372362 }
373363 catch (AmqpException e ) {
374364 int retries = event .incrementRetries ();
@@ -661,7 +651,7 @@ protected AmqpManager(LoggerContext loggerContext, String name) {
661651 super (loggerContext , name );
662652 }
663653
664- boolean activateOptions () {
654+ private boolean activateOptions () {
665655 ConnectionFactory rabbitConnectionFactory = createRabbitConnectionFactory ();
666656 if (rabbitConnectionFactory != null ) {
667657 Assert .state (this .applicationId != null , "applicationId is required" );
@@ -683,6 +673,7 @@ boolean activateOptions() {
683673 this .clientConnectionProperties );
684674 }
685675 setUpExchangeDeclaration ();
676+ this .senderPool = Executors .newCachedThreadPool ();
686677 return true ;
687678 }
688679 return false ;
0 commit comments