springboot-activmq

消息订阅配置(一对多)

1.生产者配置

package com.springboot.config;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.core.JmsTemplate;

@Configuration
public class MqPConfig {

    @Bean
    public ActiveMQConnectionFactory activeMQConnectionFactory() {
        ActiveMQConnectionFactory a = new ActiveMQConnectionFactory();
        a.setBrokerURL("failover:(tcp://127.0.0.1:61616)");
        a.setUseAsyncSend(true);
        a.setClientID("providerClienctConnect");
        return a;
    }

    @Bean
    public ActiveMQTopic activeMQTopic() {
        ActiveMQTopic a = new ActiveMQTopic("testSpringTopic");
        return a;
    }

    @Bean
    public JmsTemplate jmsTemplate(ActiveMQConnectionFactory factory, ActiveMQTopic topic) {
        JmsTemplate j = new JmsTemplate();
        j.setConnectionFactory(factory);
        j.setDefaultDestination(topic);
        j.setPubSubDomain(true);
        j.setReceiveTimeout(10000);
        j.setExplicitQosEnabled(true);
        j.setDeliveryMode(1);
        return j;
    }
}
View Code

2.消费者配置

package com.springboot.config;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.listener.DefaultMessageListenerContainer;

@Configuration
public class MqCConfig {

    @Bean
    public ActiveMQConnectionFactory activeMQConnectionFactory() {
        ActiveMQConnectionFactory a = new ActiveMQConnectionFactory();
        a.setBrokerURL("failover:(tcp://127.0.0.1:61616)");
        a.setUseAsyncSend(true);
        a.setClientID("providerClienctConnect");
        return a;
    }

    @Bean
    public ActiveMQTopic activeMQTopic() {
        ActiveMQTopic a = new ActiveMQTopic("testSpringTopic1");
        return a;
    }
    
    @Bean
    public ConsumerMessageListener consumerMessageListener(){
        ConsumerMessageListener c=new ConsumerMessageListener();
        return c;
    }
    
    @Bean
    public DefaultMessageListenerContainer defaultMessageListenerContainer1(ActiveMQConnectionFactory factory,ActiveMQTopic topic,ConsumerMessageListener listener){
        DefaultMessageListenerContainer d=new DefaultMessageListenerContainer();
        d.setConnectionFactory(factory);
        d.setPubSubDomain(true);
        d.setDestination(topic);
        d.setSubscriptionDurable(true);
        d.setClientId("consumerClient1");
        d.setMessageListener(listener);
        d.setSessionAcknowledgeMode(1);
        return d;
    }
    
    @Bean
    public DefaultMessageListenerContainer defaultMessageListenerContainer2(ActiveMQConnectionFactory factory,ActiveMQTopic topic,ConsumerMessageListener listener){
        DefaultMessageListenerContainer d=new DefaultMessageListenerContainer();
        d.setConnectionFactory(factory);
        d.setPubSubDomain(true);
        d.setDestination(topic);
        d.setSubscriptionDurable(true);
        d.setClientId("consumerClient2");
        d.setMessageListener(listener);
        d.setSessionAcknowledgeMode(1);
        return d;
    }
    
    
}
View Code

3消息监听配置

package com.springboot.config;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

public class ConsumerMessageListener implements MessageListener {

    @Override
    public void onMessage(Message message) {
        TextMessage tm = (TextMessage) message;
        try {
            System.out.println("---------消息消费---------");
            System.out.println("消息内容:\t" + tm.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
    
    public void f(){
        System.out.println("ConsumerMessageListener.f()");
    }

}
View Code

 注:

如果改成消息队列

1.

@Bean
public ActiveMQQueue activeMQQueue(){
ActiveMQQueue a=new ActiveMQQueue("Jaycekon");
return a;
}

2.

d.setPubSubDomain(false);//改成false
d.setDestination(queue);
View Code

posted on 2017-06-03 13:59  老邱2  阅读(126)  评论(0)    收藏  举报

导航