@@ -126,7 +126,7 @@ public class AmqpAppender extends AbstractAppender {
126
126
/**
127
127
* The template.
128
128
*/
129
- private RabbitTemplate rabbitTemplate ;
129
+ private final RabbitTemplate rabbitTemplate = new RabbitTemplate () ;
130
130
131
131
/**
132
132
* Where LoggingEvents are queued to send.
@@ -250,12 +250,18 @@ public static Builder newBuilder() {
250
250
* Submit the required number of senders into the pool.
251
251
*/
252
252
private void startSenders () {
253
+ this .rabbitTemplate .setConnectionFactory (this .manager .connectionFactory );
253
254
if (this .manager .async ) {
254
- this .manager .senderPool = Executors .newCachedThreadPool ();
255
255
for (int i = 0 ; i < this .manager .senderPoolSize ; i ++) {
256
256
this .manager .senderPool .submit (new EventSender ());
257
257
}
258
258
}
259
+ else if (this .manager .maxSenderRetries > 0 ) {
260
+ RetryTemplate retryTemplate = new RetryTemplate ();
261
+ RetryPolicy retryPolicy = new SimpleRetryPolicy (this .manager .maxSenderRetries );
262
+ retryTemplate .setRetryPolicy (retryPolicy );
263
+ this .rabbitTemplate .setRetryTemplate (retryTemplate );
264
+ }
259
265
}
260
266
261
267
@ Override
@@ -281,22 +287,6 @@ protected Message postProcessMessageBeforeSend(Message message, Event event) {
281
287
}
282
288
283
289
protected void sendEvent (Event event , Map <?, ?> properties ) {
284
- synchronized (this ) {
285
- if (this .rabbitTemplate == null ) {
286
- if (this .manager .activateOptions ()) {
287
- this .rabbitTemplate = new RabbitTemplate (this .manager .connectionFactory );
288
- if (!this .manager .async && this .manager .maxSenderRetries > 0 ) {
289
- RetryTemplate retryTemplate = new RetryTemplate ();
290
- RetryPolicy retryPolicy = new SimpleRetryPolicy (this .manager .maxSenderRetries );
291
- retryTemplate .setRetryPolicy (retryPolicy );
292
- this .rabbitTemplate .setRetryTemplate (retryTemplate );
293
- }
294
- }
295
- else {
296
- throw new AmqpException ("Cannot create template" );
297
- }
298
- }
299
- }
300
290
LogEvent logEvent = event .getEvent ();
301
291
String name = logEvent .getLoggerName ();
302
292
Level level = logEvent .getLevel ();
@@ -362,7 +352,7 @@ protected void doSend(Event event, LogEvent logEvent, MessageProperties amqpProp
362
352
message = new Message (msgBody .toString ().getBytes (), amqpProps ); //NOSONAR (default charset)
363
353
}
364
354
message = postProcessMessageBeforeSend (message , event );
365
- this .rabbitTemplate .send (this .manager .exchangeName , routingKey , message ); // NOSONAR (sync)
355
+ this .rabbitTemplate .send (this .manager .exchangeName , routingKey , message );
366
356
}
367
357
catch (AmqpException e ) {
368
358
int retries = event .incrementRetries ();
@@ -655,7 +645,7 @@ protected AmqpManager(LoggerContext loggerContext, String name) {
655
645
super (loggerContext , name );
656
646
}
657
647
658
- boolean activateOptions () {
648
+ private boolean activateOptions () {
659
649
ConnectionFactory rabbitConnectionFactory = createRabbitConnectionFactory ();
660
650
if (rabbitConnectionFactory != null ) {
661
651
Assert .state (this .applicationId != null , "applicationId is required" );
@@ -677,6 +667,7 @@ boolean activateOptions() {
677
667
this .clientConnectionProperties );
678
668
}
679
669
setUpExchangeDeclaration ();
670
+ this .senderPool = Executors .newCachedThreadPool ();
680
671
return true ;
681
672
}
682
673
return false ;
@@ -1191,8 +1182,11 @@ public AmqpAppender build() {
1191
1182
}
1192
1183
1193
1184
AmqpAppender appender = buildInstance (this .name , this .filter , theLayout , this .ignoreExceptions , manager , eventQueue );
1194
- appender .startSenders ();
1195
- return appender ;
1185
+ if (manager .activateOptions ()) {
1186
+ appender .startSenders ();
1187
+ return appender ;
1188
+ }
1189
+ return null ;
1196
1190
}
1197
1191
1198
1192
/**
0 commit comments