全java代码实现Spring与ActiveMQ整合

关于其他的配置就不做介绍了,这里主要介绍Spring与ActiveMQ整合部分的配置
在ApplicationConfig.java中添加如下代码:

//配置ConnectionFactory
    @Bean
    public ConnectionFactory connectionFactory() {
        ActiveMQConnectionFactory mqConnectionFactory = new ActiveMQConnectionFactory();
        mqConnectionFactory.setBrokerURL("tcp://localhost:6166");//mq的服务器地址
        mqConnectionFactory.setUserName("admin");//用户名
        mqConnectionFactory.setPassword("admin");//密码
        return mqConnectionFactory;
    }


//配置消息队列Queue
    @Bean
    public Destination queueDestination() {
        ActiveMQQueue activeMQQueue = new ActiveMQQueue();
        activeMQQueue.setPhysicalName("queue1");
        return activeMQQueue;
    }
//发送消息配置
//配置JmsTemplate
    @Bean
    public JmsTemplate jmsTemplate() {
        JmsTemplate jmsTemplate = new JmsTemplate();
        jmsTemplate.setConnectionFactory(connectionFactory());
        jmsTemplate.setDefaultDestination(queueDestination());
        jmsTemplate.setReceiveTimeout(10000);
        return jmsTemplate;
    }


    @Bean
    public Destination queueDestination2() {
        ActiveMQQueue activeMQQueue = new ActiveMQQueue();
        activeMQQueue.setPhysicalName("queue2");
        return activeMQQueue;
    }


    @Bean
    public QueueMessageListener queueMessageListener() {
        QueueMessageListener queueMessageListener = new QueueMessageListener();
        return queueMessageListener;
    }


    @Bean
    public DefaultMessageListenerContainer jmsContainer() {
        DefaultMessageListenerContainer listenerContainer = new DefaultMessageListenerContainer();
        listenerContainer.setConnectionFactory(connectionFactory());
        listenerContainer.setDestination(queueDestination());
        listenerContainer.setMessageListener(queueMessageListener());
        return listenerContainer;
    }


    @Bean
    public ActiveMQTopic topicDestination() {
        ActiveMQTopic activeMQTopic = new ActiveMQTopic();
        activeMQTopic.setPhysicalName("publics_topic");
        return activeMQTopic;
    }


    @Bean
    public ActiveMQTopic dpt_topic() {
        ActiveMQTopic activeMQTopic = new ActiveMQTopic();
        activeMQTopic.setPhysicalName("PUBLICS.department_topic");
        return activeMQTopic;
    }


    @Bean
    public ActiveMQTopic job_topic() {
        ActiveMQTopic activeMQTopic = new ActiveMQTopic();
        activeMQTopic.setPhysicalName("PUBLICS.job_topic");
        return activeMQTopic;
    }


    @Bean
    public ActiveMQTopic pes_topic() {
        ActiveMQTopic activeMQTopic = new ActiveMQTopic();
        activeMQTopic.setPhysicalName("PUBLICS.person_topic");
        return activeMQTopic;
    }


    @Bean
    public JmsTemplate topicJmsTemplate() {
        JmsTemplate jmsTemplate = new JmsTemplate();
        jmsTemplate.setConnectionFactory(connectionFactory());
        jmsTemplate.setDefaultDestination(topicDestination());
        jmsTemplate.setPubSubDomain(true);
        jmsTemplate.setReceiveTimeout(10000);
        return jmsTemplate;
    }


    @Bean
    public CachingConnectionFactory cachingConnectionFactory() {
        CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
        cachingConnectionFactory.setTargetConnectionFactory(connectionFactory());
        cachingConnectionFactory.setSessionCacheSize(100);
        return cachingConnectionFactory;
    }


    @Bean
    public JmsTemplate persistentTopicjmsTemplate() {
        JmsTemplate jmsTemplate = new JmsTemplate();
        jmsTemplate.setConnectionFactory(cachingConnectionFactory());
        jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT);
        jmsTemplate.setPubSubDomain(true);
        return jmsTemplate;
    }

使用方法:
1.引入topic
@Autowired
private TopicProvider topicProvider;
2.发送信息

public void mqService(Object o){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ObjectMapper mapper = new ObjectMapper();
try {
String message = df.format(new Date())+ mapper.writeValueAsString(o);
topicProvider.publish2(department_topic, message);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值