全java代码实现Spring与ActiveMQ整合

来源:互联网 发布:pubmed数据库主题词 编辑:程序博客网 时间:2024/04/27 19:51

关于其他的配置就不做介绍了,这里主要介绍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();}}
1 0
原创粉丝点击