springboot集成activeMQ实现多个队列和主题同时收和发(1)

1 springboot 版本

org.springframework.boot
spring-boot-starter-parent
1.5.6.RELEASE

2 集成activeMQ

org.springframework.boot
spring-boot-starter-activemq
3 application.properties 配置

# activemq
# activeMQ地址
# web http://localhost:8161/admin/
spring.activemq.broker-url=tcp://127.0.0.1:61616
#集群配置
#spring.activemq.broker-url=failover:(tcp://172.18.1.188:61616,tcp://172.18.1.18:61616)
#activeMQ用户名,根据实际情况配置
spring.activemq.user=admin
#activeMQ密码,根据实际情况配置
spring.activemq.password=admin
#是否启用内存模式(也就是不安装MQ,项目启动时同时也启动一个MQ实例)
spring.activemq.in-memory=true
#是否替换默认的connectionFactory,是否创建PooledConnectionFactory,默认false
spring.activemq.pool.enabled=false
#最大连接数
spring.activemq.pool.maxConnections=2
#超时时间
spring.activemq.pool.expiryTimeout=0
#空闲时间
spring.activemq.pool.idleTimeout=30000
#信任所有的包
spring.activemq.packages.trust-all=true
4 springboot集成activemq的问题:  topic和queue不能同时使用
  
5 springboot 控制使用topic 还是 queue 是通过配置 pub-sub-domain=true 实现的  

6 通过创建 两个JmsListenerContainerFactory,分别是topicListenerFactory和queueListenerFactory,其中topicListenerFactory创建的时候,将pubSubDomain设置成了true,表示该Listener负责处理Topic;queueListenerFactory创建的时候,将pubSubDomain设置成了false,也就是说,jms默认就是queue模式,该Listener主要负责处理Queue。
@Configuration
@EnableJms
public class JmsConfig {

@Value("${application.topicDestinationName1}")
public String TOPIC1;

@Value("${application.topicDestinationName2}")
public String TOPIC2;

@Value("${application.queueDestinationName1}")
public String QUEUE1;

@Value("${application.queueDestinationName2}")
public String QUEUE2;

@Bean
public Topic topic1() {
return new ActiveMQTopic(TOPIC1);
}

@Bean
public Topic topic2() {
return new ActiveMQTopic(TOPIC2);
}

@Bean
public Queue queue1() {
return new ActiveMQQueue(QUEUE1);
}

@Bean
public Queue queue2() {
return new ActiveMQQueue(QUEUE2);
}


/**
* topic模式的ListenerContainer
* @return
*/
@Bean
public JmsListenerContainerFactory topicListenerFactory() {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
ActiveMQConnectionFactory connectionFactor=new ActiveMQConnectionFactory();
factory.setPubSubDomain(true);
factory.setConnectionFactory(connectionFactor);
return factory;
}

/**
* queue模式的ListenerContainer
* @return
*/
@Bean
public JmsListenerContainerFactory queueListenerFactory() {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
ActiveMQConnectionFactory connectionFactor=new ActiveMQConnectionFactory();
factory.setPubSubDomain(false);
factory.setConnectionFactory(connectionFactor);
return factory;
}
}
待续未完。。。。。。。

你可能感兴趣的:(springboot)