ActiveMQConfig.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package org.example;
  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.DefaultJmsListenerContainerFactory;
  9. import org.springframework.jms.config.JmsListenerContainerFactory;
  10. import javax.jms.ConnectionFactory;
  11. import javax.jms.Queue;
  12. import javax.jms.Topic;
  13. @Configuration
  14. public class ActiveMQConfig {
  15. @Value("${spring.activemq.user}")
  16. private String usrName;
  17. @Value("${spring.activemq.password}")
  18. private String password;
  19. @Value("${spring.activemq.broker-url}")
  20. private String brokerUrl;
  21. @Value("${queueName}")
  22. private String queueName;
  23. @Value("${topicName}")
  24. private String topicName;
  25. /**
  26. * 队列模式实例
  27. *
  28. * @return
  29. */
  30. @Bean
  31. public Queue queue() {
  32. return new ActiveMQQueue(queueName);
  33. }
  34. /**
  35. * 订阅模式实例
  36. *
  37. * @return
  38. */
  39. @Bean
  40. public Topic topic() {
  41. return new ActiveMQTopic(topicName);
  42. }
  43. /**
  44. * 配置以下两个bean,同时支持队列模式和广播模式,配置中spring.jms.pub-sub-domain=true将失效
  45. * @return
  46. */
  47. @Bean("connectionFactory")
  48. public ActiveMQConnectionFactory connectionFactory() {
  49. return new ActiveMQConnectionFactory(usrName, password, brokerUrl);
  50. }
  51. @Bean("queueListenerFactory")
  52. public JmsListenerContainerFactory<?> queueListenerFactory(ConnectionFactory connectionFactory) {
  53. DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
  54. factory.setConnectionFactory(connectionFactory);
  55. factory.setPubSubDomain(false);
  56. return factory;
  57. }
  58. @Bean("topicListenerFactory")
  59. public JmsListenerContainerFactory <?> topicListenerFactory(ConnectionFactory connectionFactory) {
  60. DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
  61. factory.setConnectionFactory(connectionFactory);
  62. //设置为发布订阅方式, 默认情况下使用的生产消费者方式
  63. factory.setPubSubDomain(true);
  64. return factory;
  65. }
  66. }