@@ -123,7 +123,7 @@ public class AmqpAppender extends AbstractAppender {
123
123
/**
124
124
* The template.
125
125
*/
126
- private RabbitTemplate rabbitTemplate ;
126
+ private final RabbitTemplate rabbitTemplate = new RabbitTemplate () ;
127
127
128
128
/**
129
129
* Where LoggingEvents are queued to send.
@@ -256,12 +256,18 @@ public static AmqpAppender createAppender(// NOSONAR NCSS line count
256
256
* Submit the required number of senders into the pool.
257
257
*/
258
258
private void startSenders () {
259
+ this .rabbitTemplate .setConnectionFactory (this .manager .connectionFactory );
259
260
if (this .manager .async ) {
260
- this .manager .senderPool = Executors .newCachedThreadPool ();
261
261
for (int i = 0 ; i < this .manager .senderPoolSize ; i ++) {
262
262
this .manager .senderPool .submit (new EventSender ());
263
263
}
264
264
}
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
+ }
265
271
}
266
272
267
273
@ Override
@@ -287,22 +293,6 @@ protected Message postProcessMessageBeforeSend(Message message, Event event) {
287
293
}
288
294
289
295
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
- }
306
296
LogEvent logEvent = event .getEvent ();
307
297
String name = logEvent .getLoggerName ();
308
298
Level level = logEvent .getLevel ();
@@ -368,7 +358,7 @@ protected void doSend(Event event, LogEvent logEvent, MessageProperties amqpProp
368
358
message = new Message (msgBody .toString ().getBytes (), amqpProps ); //NOSONAR (default charset)
369
359
}
370
360
message = postProcessMessageBeforeSend (message , event );
371
- this .rabbitTemplate .send (this .manager .exchangeName , routingKey , message ); // NOSONAR (sync)
361
+ this .rabbitTemplate .send (this .manager .exchangeName , routingKey , message );
372
362
}
373
363
catch (AmqpException e ) {
374
364
int retries = event .incrementRetries ();
@@ -661,7 +651,7 @@ protected AmqpManager(LoggerContext loggerContext, String name) {
661
651
super (loggerContext , name );
662
652
}
663
653
664
- boolean activateOptions () {
654
+ private boolean activateOptions () {
665
655
ConnectionFactory rabbitConnectionFactory = createRabbitConnectionFactory ();
666
656
if (rabbitConnectionFactory != null ) {
667
657
Assert .state (this .applicationId != null , "applicationId is required" );
@@ -683,6 +673,7 @@ boolean activateOptions() {
683
673
this .clientConnectionProperties );
684
674
}
685
675
setUpExchangeDeclaration ();
676
+ this .senderPool = Executors .newCachedThreadPool ();
686
677
return true ;
687
678
}
688
679
return false ;
0 commit comments