IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> spring整合rabbitmq使用XML -> 正文阅读

[大数据]spring整合rabbitmq使用XML

因为公司老旧框架需要使用rabbitmq,但是因为业务逻辑复杂升级springboot难度大,时间不够只能使用xml方式引入rabbitmq

首先引入jar

  	<dependency>
		<groupId>com.rabbitmq</groupId>
		<artifactId>amqp-client</artifactId>
		<version>5.4.3</version>
  	</dependency>
  	<dependency>
		<groupId>org.springframework.amqp</groupId>
		<artifactId>spring-rabbit</artifactId>
		<version>2.1.8.RELEASE</version>
  	</dependency>
    <dependency>
	  	<groupId>org.springframework.amqp</groupId>
	  	<artifactId>spring-amqp</artifactId>
	  	<version>2.1.8.RELEASE</version>
    </dependency>

spring使用的版本是5.1.9.RELEASE

创建xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:rabbit="http://www.springframework.org/schema/rabbit"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">
	<!-- 定义连接工厂 -->
    <rabbit:connection-factory id="connectionFactory" virtual-host="#{rabbitmq.rabbitmq_virtual}"
       host="#{rabbitmq.rabbitmq_host}" port="#{rabbitmq.rabbitmq_port}" username="#{rabbitmq.rabbitmq_username}" password="#{rabbitmq.rabbitmq_password}" />

    <rabbit:admin connection-factory="connectionFactory" />

<!-- 序列化mq数据   
    <bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" />
    <rabbit:template id="rabbitTemplate" connection-factory="connectionFactory" message-converter="jsonMessageConverter"/>-->
    
    <rabbit:template id="rabbitTemplate" connection-factory="connectionFactory"/>

<!-- 定义交换机绑定队列(路由模式)使用匹配符
<rabbit:topic-exchange  id="tspTboxExchange" name="tspTboxExchange">
    <rabbit:bindings>
        <rabbit:binding queue="tspTboxBQueue" pattern="#" />
    </rabbit:bindings>
</rabbit:topic-exchange>
-->

    <!-- 定义消费者 -->
    <bean id="TspConsumer" class="com.dayunmotor.tbox.gateway.business.mq.TspConsumer" />
	<!-- 定义队列 -->
    <rabbit:queue  name="tspTboxBQueue" auto-declare="true" durable="true" />

    <!-- 定义消费者监听队列 -->
    <rabbit:listener-container
            connection-factory="connectionFactory">
        <rabbit:listener ref="TspConsumer" queues="tspTboxBQueue" />
    </rabbit:listener-container>
</beans>

本文未写全xml配置,如需要可以进xsd文件查看

创建消费者

@Component
public class TspConsumer implements MessageListener {
    private TspMQController tspMQController;
	//接收消息
    @Override
    public void onMessage(Message message) {
        String body="";
        try{
            body=new String(message.getBody(),"utf-8");
            log.info("接收到消息:{}",body);
            tspMQController.processMQ(body);
        }catch(Exception e){
            log.error("执行失败");
        }
    }

    @Autowired
    public void setTspMQController(TspMQController tspMQController) {
        this.tspMQController = tspMQController;
    }
}

也可以实现ChannelAwareMessageListener接口

创建生产者

@Component
public class RabbitMqProducer {
    private static final Logger logger= LoggerFactory.getLogger(RabbitMqProducer.class);

    private RabbitTemplate rabbitTemplate;

    @Autowired
    public void setRabbitTemplate(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
    }
	//发送消息
    public void sendMessage(String exchangeKey,String routingkey,Object message){
        logger.info("exchangeKey{} routingkey{}to send message:{}",exchangeKey,routingkey,message);
        rabbitTemplate.convertAndSend(exchangeKey,routingkey,message);
    }
}

然后启动就可以实现消费和发送消息了。
启动rabbitmq监听器可以阻塞主线程一直监听数据;
本人经多次验证无法使用注解版接收mq消息,故放弃使用注解版;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:36:15  更:2021-08-22 13:37:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:04:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码