Skip to content

Commit 0492889

Browse files
artembilangaryrussell
authored andcommitted
Fix MessagingGatewaySupport implementors
The `AmqpInboundGateway` and `JmsInboundGateway` don't delegate to `super` in their `doStart()/doStop()` implementations causing the problem with an internal `replyMessageCorrelator` missed the proper lifecycle management **Cherry-pick to 5.1.x & 5.0.x**
1 parent bcf5929 commit 0492889

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

spring-integration-amqp/src/main/java/org/springframework/integration/amqp/inbound/AmqpInboundGateway.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
*/
6464
public class AmqpInboundGateway extends MessagingGatewaySupport {
6565

66-
private static final ThreadLocal<AttributeAccessor> attributesHolder = new ThreadLocal<AttributeAccessor>();
66+
private static final ThreadLocal<AttributeAccessor> attributesHolder = new ThreadLocal<>();
6767

6868
private final AbstractMessageListenerContainer messageListenerContainer;
6969

@@ -203,11 +203,13 @@ protected void onInit() {
203203

204204
@Override
205205
protected void doStart() {
206+
super.doStart();
206207
this.messageListenerContainer.start();
207208
}
208209

209210
@Override
210211
protected void doStop() {
212+
super.doStop();
211213
this.messageListenerContainer.stop();
212214
}
213215

@@ -269,18 +271,18 @@ public void onMessage(final Message message, final Channel channel) throws Excep
269271
org.springframework.messaging.Message<Object> converted = convert(message, channel);
270272
if (converted != null) {
271273
AmqpInboundGateway.this.retryTemplate.execute(context -> {
272-
StaticMessageHeaderAccessor.getDeliveryAttempt(converted).incrementAndGet();
273-
process(message, converted);
274-
return null;
275-
},
276-
(RecoveryCallback<Object>) AmqpInboundGateway.this.recoveryCallback);
274+
StaticMessageHeaderAccessor.getDeliveryAttempt(converted).incrementAndGet();
275+
process(message, converted);
276+
return null;
277+
},
278+
(RecoveryCallback<Object>) AmqpInboundGateway.this.recoveryCallback);
277279
}
278280
}
279281
}
280282

281283
private org.springframework.messaging.Message<Object> convert(Message message, Channel channel) {
282-
Map<String, Object> headers = null;
283-
Object payload = null;
284+
Map<String, Object> headers;
285+
Object payload;
284286
boolean isManualAck = AmqpInboundGateway.this.messageListenerContainer
285287
.getAcknowledgeMode() == AcknowledgeMode.MANUAL;
286288
try {
@@ -299,17 +301,17 @@ private org.springframework.messaging.Message<Object> convert(Message message, C
299301
if (errorChannel != null) {
300302
setAttributesIfNecessary(message, null);
301303
AmqpInboundGateway.this.messagingTemplate.send(errorChannel, buildErrorMessage(null,
302-
EndpointUtils.errorMessagePayload(message, channel, isManualAck, e)));
304+
EndpointUtils.errorMessagePayload(message, channel, isManualAck, e)));
303305
}
304306
else {
305307
throw e;
306308
}
307309
return null;
308310
}
309311
return getMessageBuilderFactory()
310-
.withPayload(payload)
311-
.copyHeaders(headers)
312-
.build();
312+
.withPayload(payload)
313+
.copyHeaders(headers)
314+
.build();
313315
}
314316

315317
private void process(Message message, org.springframework.messaging.Message<Object> messagingMessage) {

spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsInboundGateway.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class JmsInboundGateway extends MessagingGatewaySupport implements Dispos
3939

4040
public JmsInboundGateway(AbstractMessageListenerContainer listenerContainer,
4141
ChannelPublishingJmsMessageListener listener) {
42+
4243
this.endpoint = new JmsMessageDrivenEndpoint(listenerContainer, listener);
4344
}
4445

@@ -138,11 +139,13 @@ public ChannelPublishingJmsMessageListener getListener() {
138139

139140
@Override
140141
protected void doStart() {
142+
super.doStart();
141143
this.endpoint.start();
142144
}
143145

144146
@Override
145147
protected void doStop() {
148+
super.doStop();
146149
this.endpoint.stop();
147150
}
148151

0 commit comments

Comments
 (0)