千家信息网

Spring整合MQ配置是什么

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,Spring整合MQ配置是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。import org.apache.activemq.c
千家信息网最后更新 2025年02月01日Spring整合MQ配置是什么

Spring整合MQ配置是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

import org.apache.activemq.command.ActiveMQQueue;import org.apache.activemq.command.ActiveMQTopic;import org.apache.activemq.pool.PooledConnectionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jms.core.JmsTemplate;import org.springframework.jms.listener.*;import org.springframework.jms.support.converter.SimpleMessageConverter;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.scheduling.annotation.EnableScheduling;import javax.jms.*;@Configuration@EnableAsync@EnableSchedulingpublic class MQConfig {    /**     * 配置队列消息模板     * @param jmsFactory     * @return     */    @Bean    public JmsTemplate queueTemplate(@Autowired ConnectionFactory jmsFactory,                                   @Autowired ActiveMQQueue activeMQQueue) {        var template = new JmsTemplate(jmsFactory);        template.setDefaultDestination(activeMQQueue);        template.setMessageConverter(new SimpleMessageConverter());        return template;    }    /**     * 配置主题消息模板     * @param jmsFactory     * @param activeMQTopic     * @return     */    @Bean    public JmsTemplate topicTemplate(@Autowired ConnectionFactory jmsFactory,                                   @Autowired ActiveMQTopic activeMQTopic) {        var template = new JmsTemplate(jmsFactory);        template.setDefaultDestination(activeMQTopic);        template.setMessageConverter(new SimpleMessageConverter());        return template;    }    /**     * 配置消息生产者     * @return     */    @Bean    public PooledConnectionFactory JmsFactory() {        return new PooledConnectionFactory();    }    /**     * 配置队列消息     * @return     */    @Bean    public ActiveMQQueue activeMQQueue() {        return new ActiveMQQueue();    }    /**     * 配置主题消息     * @return     */    @Bean    public ActiveMQTopic activeMQTopic() {        return new ActiveMQTopic();    }    /**     * 配置监听器     * @return     */    @Bean    public MessageListener messageListener() {        MessageListener messageListener = new MessageListener() {            @Override            public void onMessage(Message message) {                if (null != message && message instanceof TextMessage) {                    try {                        ((TextMessage) message).getText();                    } catch (JMSException e) {                        e.printStackTrace();                    }                }            }        };        return messageListener;    }    /**     * 配置监听容器     * @param jmsFactory     * @param activeMQQueue     * @param messageListener     * @return     */    @Bean    public DefaultMessageListenerContainer jmsContainer(@Autowired ConnectionFactory jmsFactory,                                                        @Autowired ActiveMQQueue activeMQQueue,                                                        @Autowired MessageListener messageListener) {        DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();        container.setConnectionFactory(jmsFactory);        container.setDestination(activeMQQueue);        container.setMessageListener(messageListener);        return container;    }}
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.jms.core.JmsTemplate;import org.springframework.scheduling.annotation.Async;import org.springframework.stereotype.Service;import javax.jms.TextMessage;@Servicepublic class MQ {    @Autowired@Qualifier("queueTemplate")    private JmsTemplate queueTemplate;    @Autowired@Qualifier("topicTemplate")    private JmsTemplate topicTemplate;    @Async    public void queueProducer(){        queueTemplate.send(session -> {            TextMessage textMessage = session.createTextMessage("*****");            return textMessage;        });    }    @Async    public void queueConsumer(){        queueTemplate.receiveAndConvert();    }    @Async    public void topicProducer(){        topicTemplate.send(session -> {            TextMessage textMessage = session.createTextMessage("*****");            return textMessage;        });    }    @Async    public void topicConsumer(){        topicTemplate.receiveAndConvert();    }}

关于Spring整合MQ配置是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0