当前位置: 首页 > article >正文

Springboot集成rabbitmq

依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

DirectRabbitConfig.java

package com.zzxt.web.core.config;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class DirectRabbitConfig {
 
    //队列 起名:TestDirectQueue
    @Bean
    public Queue DirectQueue() {
        // durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效
        // exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable
        // autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。
        //   return new Queue("TestDirectQueue",true,true,false);
 
        //一般设置一下队列的持久化就好,其余两个就是默认false
        return new Queue("DzOrgSale",true);
    }
    //Direct交换机
    @Bean
    DirectExchange DirectExchange() {
        return new DirectExchange("DzSalData",true,false);
    }
    //绑定  将队列和交换机绑定, 并设置用于匹配键:DzOrgSale
    @Bean
    Binding bindingDirect() {
        return BindingBuilder.bind(DirectQueue()).to(DirectExchange()).with("DzOrgSale");
    }
    @Bean
    DirectExchange lonelyDirectExchange() {
        return new DirectExchange("DzSalData");
    }
}

注解监听队列 DirectReceiver.java

package com.zzxt.web.core.config;

import java.io.IOException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.rabbitmq.client.Channel;
import com.zzxt.task.service.ITaskService;

@Component
public class DirectReceiver {
	protected final Logger logger = LoggerFactory.getLogger(DirectReceiver.class);
	
	@Autowired
	private ITaskService taskService;
 
	@RabbitListener(queues = "DzOrgSale")//监听的队列名称 DirectQueue
    public void process(Message message, Channel channel) {
		byte[] body = message.getBody();
		try {
			logger.info("接收到队列:{}的消息为:{}", "DzOrgSale", new String(body,"UTF-8"));
			// 自己的业务模块,保存成功之后手动确认
			boolean saveHxFySalDate = taskService.saveHxFySalDate(new String(body,"UTF-8"));
			if(saveHxFySalDate) {
				channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
    }
}


http://www.kler.cn/news/233761.html

相关文章:

  • linux系统非关系型数据库memcached
  • 【SpringBoot】Redis集中管理Session和自定义用户参数解决登录状态及校验问题
  • spring boot学习第十二篇:mybatis框架中调用存储过程控制事务性
  • 六、滚动条操作——调整图像亮度
  • 《Docker极简教程》--Docker环境的搭建--在Linux上搭建Docker环境
  • 架设游戏服务器租用价格?腾讯云和阿里云价格对比
  • 跟着cherno手搓游戏引擎【23】项目维护、2D引擎之前的一些准备
  • 小程序配置服务器域名流程指南
  • 机器学习2---逻辑回归(基础准备)
  • 新概念英语第二册(62)
  • vim常用命令以及配置文件
  • 物联网中基于WIFI的室内温度检测系统设计
  • Blender 的重拓扑功能中的参数,
  • c++中的模板(1) -- 什么是模板
  • Kotlin和Java 单例模式
  • 【Linux】Shell编程
  • 【ASP.NET Core 基础知识】--部署和维护--日志记录和错误处理
  • C++中类的6个默认成员函数【构造函数】 【析构函数】
  • Java串口通信技术探究3:RXTX库线程 优化系统性能的SerialPortEventListener类
  • k8s-常用工作负载控制器(更高级管理Pod)
  • 基于 SpringBoot 和 Vue.js 的权限管理系统部署教程
  • 备战蓝桥杯---动态规划之背包问题引入
  • 基于opencv-python模板匹配的银行卡号识别(附源码)
  • 基于tomcat运行jenkins常见的报错处理
  • Linux---线程
  • uv机器电机方向极性
  • Go 语言 for 的用法
  • 《剑指 Offer》专项突破版 - 面试题 36 : 详解后缀表达式(C++ 实现)
  • 计算机毕业设计 | SSM超市进销存管理系统(附源码)
  • 鸿蒙原生应用再添新丁!央视新闻 入局鸿蒙