springboot配置多个Activemq

本文将介绍如何在Springboot 1.5.10.RELEASE环境下配置和使用多个ActiveMQ实例。内容涵盖配置文件的详细设置,以及消费者和生产者的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境配置

springboot 1.5.10.RELEASE

配置文件

spring.inner.activemq.brokerUrl=tcp://1.1.1.1:61616?wireFormat.maxInactivityDuration=10000
spring.inner.activemq.user=admin
spring.inner.activemq.password=admin

spring.saas.activemq.brokerUrl=tcp://1.1.1.2:61616?wireFormat.maxInactivityDuration=10000
spring.saas.activemq.user=admin
spring.saas.activemq.password=admin

active mqconfig

package com.jms.config;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.jms.core.JmsMessagingTemplate;

/**
 * activemq配置多数据源
 *
 * @author sulibo
 * @date 2018年8月23日
 */
@Configuration
public class ActiveMqConfig {

	@Bean(name = "innerConnectionFactory")
	@Primary
	public ActiveMQConnectionFactory firstConnectionFactory(
			@Value("${spring.inner.activemq.brokerUrl}") String brokerUrl,
			@Value("${spring.inner.activemq.user}") String username,
			@Value("${spring.inner.activemq.password}") String password) {
		ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
		factory.setBrokerURL(brokerUrl);
		factory.setUserName(username);
		factory.setPassword(password);
		return factory;
	}

	@Bean(name = "saasConnectionFactory")
	public ActiveMQConnectionFactory secondConnectionFactory(
			@Value("${spring.saas.activemq.brokerUrl}") String brokerUrl,
			@Value("${spring.saas.activemq.user}") String username,
			@Value("${spring.saas.activemq.password}") String password) {
		ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
		factory.setBrokerURL(brokerUrl);
		factory.setUserName(username);
		factory.setPassword(password);
		return factory;
	}

	@Bean(name = "innerActivemqTemplate")
	@Primary
	public JmsMessagingTemplate innerActivemqTemplate(
			@Qualifier("innerConnectionFactory") ActiveMQConnectionFactory connectionFactory) {
		JmsMessagingTemplate template = new JmsMessagingTemplate(connectionFactory);
		return template;
	}

	@Bean(name = "sasaActivemqTemplate")
	public JmsMessagingTemplate sasaActivemqTemplate(
			@Qualifier("saasConnectionFactory") ActiveMQConnectionFactory connectionFactory) {
		JmsMessagingTemplate template = new JmsMessagingTemplate(connectionFactory);
		return template;
	}

	@Bean(name = "innerFactory")
	public JmsListenerContainerFactory innerFactory(
			@Qualifier("innerConnectionFactory") ActiveMQConnectionFactory connectionFactory) {
		DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
		factory.setConnectionFactory(connectionFactory);
		return factory;
	}

	@Bean(name = "saasFactory")
	public JmsListenerContainerFactory saasFactory(
			@Qualifier("saasConnectionFactory") ActiveMQConnectionFactory connectionFactory) {
		DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
		factory.setConnectionFactory(connectionFactory);
		return factory;
	}
}

consumer

@Component
@Log4j
public class SaasConsumer {
	
	
	@JmsListener(destination = "ALIM_PHASE_COUNT",containerFactory="saasFactory")
	private void consume(final Message msg) throws JMSException, Exception{

    }
@Component
@Log4j
public class InnerConsumer {
	
	
	@JmsListener(destination = "ALIM_PHASE_COUNT",containerFactory="innerFactory")
	private void consume(final Message msg) throws JMSException, Exception{
    
    }

producer

package com.jms.producer;

import javax.jms.Destination;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Service;

/**
 * 生成推送大数据猫头鹰监控数据
 *
 * @author sulibo
 * @date 2018年4月19日
 */
@Service
public class RunlogProducer {
    /**
     * 也可以注入JmsTemplate,JmsMessagingTemplate对JmsTemplate进行了封装
     */
    @Autowired
    private JmsMessagingTemplate innerActivemqTemplate;


    /**
     * 发送消息,destination是发送到的队列,message是待发送的消息
     * @param destination 使用JMS具体实现
     * @param message 消息内容
     */
    public void sendMessage(Destination destination, final String message){
    	innerActivemqTemplate.convertAndSend(destination, message);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值