ActiveMQ使用

MQ操作

package com.hm.wll.task;

import com.alibaba.fastjson.JSON;

import com.hm.wll.service.AssayRiskService;
import com.hm.wll.service.RealTimeDataService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.jms.*;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Slf4j
@Component
@Configuration
@EnableScheduling
public class MqTask {

    @Value("${aciiveMq.topic}")
    private String mqTopic;

    @Autowired
    private JmsTemplate jmsTemplate;

    @Autowired
    private ConnectionFactory connectionFactory;

  
    @Scheduled(cron = "0/3 * * * * ?")
    public void pushMqWellList() {
        System.out.println("mq开始时间" + new Date());
    
        try {
            Connection connection = connectionFactory.createConnection();
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Destination destination = session.createTopic(mqTopic);
            //MessageProducer producer = session.createProducer(destination);
            //获取数据
            List<Map<String, Object>> mapList = realTimeDataService.getDataList();
            String dataInfo = JSON.toJSONString(mapList);
            TextMessage message = session.createTextMessage(dataInfo);
            // 半小时过期
            //message.setJMSExpiration(1800000);
            jmsTemplate.convertAndSend(destination, message.getText());
            //System.out.println("mq" + message.getText());
            //producer.send(message);
            session.close();
        } catch (Exception e) {
            e.printStackTrace();
            log.error("发送消息>>>>>>>>" + e);
        }
        System.out.println("mq结束时间" + new Date());

    }
}
package com.test.wl.config;

import lombok.Data;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.core.JmsTemplate;

import javax.jms.ConnectionFactory;


/**使用spring注入的方式发送mq,减少连接压力
 * @author 苹果
 */
@Configuration
@EnableJms
@Data
public class JmsConfig {
    @Value("${aciiveMq.topicStuck}")
    private String topicStuck ;

    @Value("${aciiveMq.url}")
    private String mqUrl;

    @Value("${aciiveMq.userName}")
    private String userName;

    @Value("${aciiveMq.password}")
    private String password;

    @Bean
    public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) {
        return new JmsTemplate(connectionFactory);
    }

    @Bean
    public ConnectionFactory connectionFactory() {
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName, password, mqUrl);
        return connectionFactory;
    }
}

 此处只展示通过bean获取jmsTemplate ,如果不被sping管理的类需要注入可以通过这种方式获取,否则在此类中直接写private String  topic=“主题”这种方式的话报错(没有加配置类注解的)


 public void mqCont(String recCache) {
        JmsTemplate jmsTemplate = SpringUtil.getBean(JmsTemplate.class);
        ConnectionFactory connectionFactory = SpringUtil.getBean(ConnectionFactory.class);
        MQConfig bean = SpringUtil.getBean(MQConfig.class);
        try {

            Connection connection = connectionFactory.createConnection();
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Destination destination = session.createTopic(bean.getMqTopicata());
            TextMessage message = session.createTextMessage(String.valueOf(recCache));
            // 半小时过期
            //message.setJMSExpiration(1800000);
            jmsTemplate.convertAndSend(destination, message.getText());
            String text = message.getText();
           // StaticLog.info("输出text文本:"+ text);
            //  System.out.println("mq" + message.getText());
            //producer.send(message);
            session.close();
//            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName, password, mqUrl);
//            StaticLog.info("连接connectionFactory");
//            Connection connection = connectionFactory.createConnection();
//            connection.start();
//            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//            Destination destination = session.createTopic(mqTopicBigData);
//            MessageProducer producer = session.createProducer(destination);
//            TextMessage message = session.createTextMessage(String.valueOf(recCache));
            String text = message.getText();
            StaticLog.info("输出text文本:"+text);
//            producer.send(message);
//            session.close();
        } catch (Exception e) {
            e.printStackTrace();
            StaticLog.info("抛出mq日常");
        }
    }

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值