У меня проблемы с запуском JmsListener во время работы приложения. Я попробовал этот ответ на topi c, но не повезло.
В моем JmsListenerContainerFactory
для autoStartup установлено значение false, и в очереди ожидают сообщения. Но когда я вызываю контроллер в коде ниже, ничего не происходит. JmsLister не начинает потреблять сообщения.
Любая помощь будет оценена.
Код контроллера:
@RestController
public class MessageController {
private final JmsListenerEndpointRegistry jmsListenerEndpointRegistry;
public MessageController(JmsListenerEndpointRegistry jmsListenerEndpointRegistry) {
this.jmsListenerEndpointRegistry = jmsListenerEndpointRegistry;
}
@GetMapping("messages/start")
public ResponseEntity start() {
if(jmsListenerEndpointRegistry.isRunning())
return ResponseEntity.badRequest().build(); // second time I request this endpoint it says it is running
jmsListenerEndpointRegistry.getListenerContainerIds().forEach(id -> {
MessageListenerContainer listenerContainer = jmsListenerEndpointRegistry.getListenerContainer(id);
if (listenerContainer != null) {
listenerContainer.start();
}
});
jmsListenerEndpointRegistry.start();
return ResponseEntity.ok().build();
}
}
Редактировать: это журнал отладки, когда я отправляю запрос контроллеру:
19:59:41.231 [http-nio-8080-exec-2] DEBUG o.s.web.servlet.DispatcherServlet - GET "/messages/start", parameters={}
19:59:41.238 [http-nio-8080-exec-2] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped to MessageController#start()
19:59:53.764 [http-nio-8080-exec-2] DEBUG o.a.a.transport.WireFormatNegotiator - Sending: WireFormatInfo { version=12, properties={StackTraceEnabled=true, PlatformDetails=Java, CacheEnabled=true, Host=mqserver, TcpNoDelayEnabled=true, SizePrefixDisabled=false, CacheSize=1024, ProviderName=ActiveMQ, TightEncodingEnabled=true, MaxFrameSize=9223372036854775807, MaxInactivityDuration=30000, MaxInactivityDurationInitalDelay=10000, ProviderVersion=5.15.11}, magic=[A,c,t,i,v,e,M,Q]}
19:59:53.773 [ActiveMQ Transport: tcp://mqserver/127.0.0.1:49040@48600] DEBUG o.a.a.transport.InactivityMonitor - Using min of local: WireFormatInfo { version=12, properties={StackTraceEnabled=true, PlatformDetails=Java, CacheEnabled=true, Host=mqserver, TcpNoDelayEnabled=true, SizePrefixDisabled=false, CacheSize=1024, ProviderName=ActiveMQ, TightEncodingEnabled=true, MaxFrameSize=9223372036854775807, MaxInactivityDuration=30000, MaxInactivityDurationInitalDelay=10000, ProviderVersion=5.15.11}, magic=[A,c,t,i,v,e,M,Q]} and remote: WireFormatInfo { version=9, properties={CacheSize=1024, SizePrefixDisabled=false, TcpNoDelayEnabled=true, StackTraceEnabled=true, CacheEnabled=true, MaxFrameSize=9223372036854775807, TightEncodingEnabled=true, MaxInactivityDuration=30000, MaxInactivityDurationInitalDelay=10000}, magic=[A,c,t,i,v,e,M,Q]}
19:59:53.774 [ActiveMQ Transport: tcp://mqserver/127.0.0.1:49040@48600] DEBUG o.a.a.transport.WireFormatNegotiator - Received WireFormat: WireFormatInfo { version=9, properties={CacheSize=1024, SizePrefixDisabled=false, TcpNoDelayEnabled=true, StackTraceEnabled=true, CacheEnabled=true, MaxFrameSize=9223372036854775807, TightEncodingEnabled=true, MaxInactivityDuration=30000, MaxInactivityDurationInitalDelay=10000}, magic=[A,c,t,i,v,e,M,Q]}
19:59:53.774 [ActiveMQ Transport: tcp://mqserver/127.0.0.1:49040@48600] DEBUG o.a.a.transport.WireFormatNegotiator - tcp://mqserver/127.0.0.1:49040@48600 before negotiation: OpenWireFormat{version=12, cacheEnabled=false, stackTraceEnabled=false, tightEncodingEnabled=false, sizePrefixDisabled=false, maxFrameSize=9223372036854775807}
19:59:53.790 [ActiveMQ Transport: tcp://mqserver/127.0.0.1:49040@48600] DEBUG o.a.a.transport.WireFormatNegotiator - tcp://mqserver/127.0.0.1:49040@48600 after negotiation: OpenWireFormat{version=9, cacheEnabled=true, stackTraceEnabled=true, tightEncodingEnabled=true, sizePrefixDisabled=false, maxFrameSize=9223372036854775807}
19:59:53.895 [http-nio-8080-exec-2] DEBUG o.s.j.l.DefaultMessageListenerContainer - Established shared JMS Connection
19:59:53.896 [http-nio-8080-exec-2] DEBUG o.s.j.l.DefaultMessageListenerContainer - Resumed paused task: org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker@4fc72d52
20:00:00.326 [DefaultMessageListenerContainer-1] DEBUG o.a.a.thread.TaskRunnerFactory - Initialized TaskRunnerFactory[ActiveMQ Session Task] using ExecutorService: java.util.concurrent.ThreadPoolExecutor@4364b2e9[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
Редактировать: Я проверял не тот экземпляр ActiveMq, но принятый ответ помог мне проверить и отладить «ошибку» простым и эффективным способом