2015-09-15 21 views
5

Tôi đang sử dụng Spring (khởi động) trên dự án của tôi và tôi truy cập vào một JMS Queue (ActiveMQ) sử dụng:Làm thế nào tôi có thể Dừng/bắt đầu/Tạm dừng một @JmsListener (cách sạch)

@JmsListener(destination = "mydestinationQueue") 
public void processMessage(String content) { 
    //do something 
} 

Và nó hoạt động hoàn toàn nhưng tôi cần để có thể dừng/tạm dừng/bắt đầu bean này theo chương trình (gọi REST hoặc một cái gì đó tương tự)

Khi tôi dừng hoặc tạm dừng bean này, tôi muốn chắc chắn đã xử lý hoàn toàn tin nhắn hiện tại.

bất kỳ ý tưởng nào về điều đó?

nhờ

Trả lời

4

Có một bean loại JmsListenerEndpointRegistry (tên org.springframework.jms.config.internalJmsListenerEndpointRegistry).

Bạn có thể truy cập vùng chứa người nghe JMS từ sổ đăng ký (tất cả hoặc theo tên) và gọi stop() trên (các) bạn muốn; vùng chứa sẽ dừng sau khi bất kỳ thông báo trong quá trình nào hoàn tất quá trình xử lý của chúng.

+0

nhờ câu trả lời của tôi sẽ cung cấp cho nó một thử và cho bạn biết – Seb

4

Dưới đây là giải pháp tôi đã tìm thấy

@RestController 
@RequestMapping("/jms") 
public class JmsController { 

    @Autowired 
    ApplicationContext context; 

@RequestMapping(value="/halt", method= RequestMethod.GET) 
public @ResponseBody 
String haltJmsListener() { 
    JmsListenerEndpointRegistry customRegistry = 
      context.getBean("jmsRegistry", JmsListenerEndpointRegistry.class); 
    customRegistry.stop(); 
    return "Jms Listener Stopped"; 
} 

@RequestMapping(value="/restart", method=RequestMethod.GET) 
public @ResponseBody 
String reStartJmsListener() { 
    JmsListenerEndpointRegistry customRegistry = 
      context.getBean("jmsRegistry", JmsListenerEndpointRegistry.class); 
    customRegistry.start(); 
    return "Jms Listener restarted"; 
} 

@RequestMapping(value="/stopApp", method=RequestMethod.GET) 
public @ResponseBody 
String stopApp() { 
    String[] args={}; 
    SpringApplication.run(FacturationApplicationFrontDaemon.class, args).close(); 
    return "stopped"; 
} 

} 
Các vấn đề liên quan