spring-boot-starter-activemq-demo

ActiveMQConfig.java 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package com.vcarecity.mq.config;
  2. import org.apache.activemq.ActiveMQConnectionFactory;
  3. import org.apache.activemq.command.ActiveMQQueue;
  4. import org.apache.activemq.command.ActiveMQTopic;
  5. import org.springframework.beans.factory.annotation.Value;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. import org.springframework.jms.config.JmsListenerContainerFactory;
  9. import org.springframework.jms.config.SimpleJmsListenerContainerFactory;
  10. import org.springframework.jms.core.JmsMessagingTemplate;
  11. import javax.jms.ConnectionFactory;
  12. import javax.jms.Queue;
  13. import javax.jms.Topic;
  14. @Configuration
  15. public class ActiveMQConfig {
  16. @Value("${spring.activemq.broker-url}")
  17. private String brokerUrl;
  18. @Value("${spring.activemq.user}")
  19. private String username;
  20. @Value("${spring.activemq.topic-name}")
  21. private String password;
  22. @Value("${spring.activemq.queue-name}")
  23. private String queueName;
  24. @Value("${spring.activemq.topic-name}")
  25. private String topicName;
  26. @Bean(name = "queue")
  27. public Queue queue() {
  28. return new ActiveMQQueue(queueName);
  29. }
  30. @Bean(name = "topic")
  31. public Topic topic() {
  32. return new ActiveMQTopic(topicName);
  33. }
  34. @Bean
  35. public ConnectionFactory connectionFactory() {
  36. return new ActiveMQConnectionFactory(username, password, brokerUrl);
  37. }
  38. @Bean
  39. public JmsMessagingTemplate jmsMessageTemplate() {
  40. return new JmsMessagingTemplate(connectionFactory());
  41. }
  42. // 在Queue模式中,对消息的监听需要对containerFactory进行配置
  43. @Bean("queueListener")
  44. public JmsListenerContainerFactory<?> queueJmsListenerContainerFactory(ConnectionFactory connectionFactory) {
  45. SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
  46. factory.setConnectionFactory(connectionFactory);
  47. factory.setPubSubDomain(false);
  48. return factory;
  49. }
  50. //在Topic模式中,对消息的监听需要对containerFactory进行配置
  51. @Bean("topicListener")
  52. public JmsListenerContainerFactory<?> topicJmsListenerContainerFactory(ConnectionFactory connectionFactory) {
  53. SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
  54. factory.setConnectionFactory(connectionFactory);
  55. factory.setPubSubDomain(true);
  56. return factory;
  57. }
  58. }