mq调试
This commit is contained in:
parent
c3105b125f
commit
d68d9e76c5
@ -1,4 +1,4 @@
|
|||||||
package com.qiuguo.iot.rabbit.constants;
|
package com.qiuguo.iot.data.constants;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author simon
|
* @author simon
|
||||||
@ -1,58 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<parent>
|
|
||||||
<groupId>com.qiuguo.iot</groupId>
|
|
||||||
<artifactId>iot-common</artifactId>
|
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<artifactId>iot-rabbit</artifactId>
|
|
||||||
<name>iot-rabbit</name>
|
|
||||||
<description>mq类</description>
|
|
||||||
|
|
||||||
<properties>
|
|
||||||
<java.version>1.8</java.version>
|
|
||||||
</properties>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-amqp</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-webflux</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.amqp</groupId>
|
|
||||||
<artifactId>spring-rabbit-test</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<finalName>${project.artifactId}</finalName>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
||||||
<version>${spring.boot.maven.plugin.version}</version>
|
|
||||||
<configuration>
|
|
||||||
<!--跳过对项目中main方法的查找-->
|
|
||||||
<skip>true</skip>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<goals>
|
|
||||||
<goal>repackage</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
</project>
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
package com.qiuguo.iot.rabbit.config;
|
|
||||||
|
|
||||||
import com.qiuguo.iot.rabbit.constants.YunxiRabbitConst;
|
|
||||||
import org.springframework.amqp.core.Binding;
|
|
||||||
import org.springframework.amqp.core.Exchange;
|
|
||||||
import org.springframework.amqp.core.Queue;
|
|
||||||
import org.springframework.amqp.core.TopicExchange;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class RunXiRabbitConfig {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 交换机
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Bean
|
|
||||||
public Exchange RunxiEventExchange() {
|
|
||||||
return new TopicExchange(YunxiRabbitConst.EXCHANGE_YUNXI_EVENT,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
package com.qiuguo.iot.rabbit.service;
|
|
||||||
|
|
||||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import reactor.core.publisher.Mono;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author simon
|
|
||||||
* @date 2023/9/25
|
|
||||||
* @description
|
|
||||||
**/
|
|
||||||
@Service
|
|
||||||
public class MqSendMsgService {
|
|
||||||
@Resource
|
|
||||||
private RabbitTemplate rabbitTemplate;
|
|
||||||
public Mono<Boolean> sendRabbitMsg(String exchange, String routingKey, Object message) {
|
|
||||||
return Mono.create(sink -> {
|
|
||||||
rabbitTemplate.setConfirmCallback((correlation, ack, cause) -> {
|
|
||||||
if (ack) {
|
|
||||||
// 消息发送成功
|
|
||||||
sink.success(Boolean.TRUE);
|
|
||||||
} else {
|
|
||||||
// 消息发送失败
|
|
||||||
sink.error(new RuntimeException("Message send failed: " + cause));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
rabbitTemplate.convertAndSend(exchange, routingKey, message);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -20,15 +20,7 @@
|
|||||||
<artifactId>tuya-spring-boot-starter</artifactId>
|
<artifactId>tuya-spring-boot-starter</artifactId>
|
||||||
<version>1.3.2</version>
|
<version>1.3.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-test</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-webflux</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.qiuguo.iot</groupId>
|
<groupId>com.qiuguo.iot</groupId>
|
||||||
<artifactId>iot-base</artifactId>
|
<artifactId>iot-base</artifactId>
|
||||||
@ -42,10 +34,31 @@
|
|||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.projectreactor</groupId>
|
<groupId>org.testng</groupId>
|
||||||
<artifactId>reactor-test</artifactId>
|
<artifactId>testng</artifactId>
|
||||||
|
<version>RELEASE</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter-api</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.amqp</groupId>
|
||||||
|
<artifactId>spring-rabbit</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@ -0,0 +1,67 @@
|
|||||||
|
package com.qiuguo.iot.third.service;
|
||||||
|
|
||||||
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author simon
|
||||||
|
* @date 2023/9/26
|
||||||
|
* @description
|
||||||
|
**/
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class MqService {
|
||||||
|
private final RabbitTemplate rabbitTemplate;
|
||||||
|
private final AtomicBoolean confirmationResult = new AtomicBoolean(false);
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public MqService(RabbitTemplate rabbitTemplate) {
|
||||||
|
this.rabbitTemplate = rabbitTemplate;
|
||||||
|
|
||||||
|
// 设置 ConfirmCallback
|
||||||
|
rabbitTemplate.setConfirmCallback((correlation, ack, cause) -> {
|
||||||
|
if (ack) {
|
||||||
|
// 消息发送成功
|
||||||
|
confirmationResult.set(true);
|
||||||
|
System.out.println("消息发送成功");
|
||||||
|
} else {
|
||||||
|
// 消息发送失败
|
||||||
|
confirmationResult.set(false);
|
||||||
|
System.out.println("消息发送失败");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public Mono<Boolean> sendMessageWithConfirmation(String exchange, String routingKey, Object message) {
|
||||||
|
rabbitTemplate.convertAndSend(exchange, routingKey, message);
|
||||||
|
|
||||||
|
return Mono.defer(() -> {
|
||||||
|
boolean result = confirmationResult.get();
|
||||||
|
return Mono.just(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public Mono<Object> sendMessage(String exchange, String routingKey, Object message) {
|
||||||
|
// 只设置一次确认回调
|
||||||
|
rabbitTemplate.setConfirmCallback((correlation, ack, cause) -> {
|
||||||
|
if (ack) {
|
||||||
|
// 消息发送成功
|
||||||
|
System.out.println("Message sent successfully.");
|
||||||
|
} else {
|
||||||
|
// 消息发送失败
|
||||||
|
System.err.println("Message send failed: " + cause);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return Mono.defer(() -> {
|
||||||
|
rabbitTemplate.convertAndSend(exchange, routingKey, message);
|
||||||
|
// 返回一个表示异步操作完成的 Mono
|
||||||
|
return Mono.empty();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,16 +0,0 @@
|
|||||||
package com.qiuguo.iot.third;
|
|
||||||
|
|
||||||
import com.qiuguo.iot.data.resp.third.ThirdIpInfoResp;
|
|
||||||
import com.qiuguo.iot.data.resp.third.ThirdRpcResp;
|
|
||||||
import com.qiuguo.iot.third.service.IpService;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
|
||||||
import reactor.core.publisher.Mono;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
|
||||||
|
|
||||||
@SpringBootTest()
|
|
||||||
class IotThirdApplicationTests {
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
import reactor.test.StepVerifier;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,6 @@
|
|||||||
<module>iot-base</module>
|
<module>iot-base</module>
|
||||||
<module>iot-data</module>
|
<module>iot-data</module>
|
||||||
<module>iot-third</module>
|
<module>iot-third</module>
|
||||||
<module>iot-rabbit</module>
|
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|||||||
@ -1,114 +0,0 @@
|
|||||||
package com.qiuguo.iot.admin.http.api.controller;
|
|
||||||
|
|
||||||
import com.qiuguo.iot.admin.http.api.req.DemoReq;
|
|
||||||
import com.qiuguo.iot.base.nlp.lac.LacNlp;
|
|
||||||
import com.qiuguo.iot.base.nlp.Nlp;
|
|
||||||
import com.qiuguo.iot.data.entity.device.DeviceInfoEntity;
|
|
||||||
import com.qiuguo.iot.data.service.device.DeviceInfoService;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import reactor.core.publisher.Flux;
|
|
||||||
import reactor.core.publisher.Mono;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.IntStream;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/demo")
|
|
||||||
@Slf4j
|
|
||||||
@AllArgsConstructor
|
|
||||||
|
|
||||||
public class DemoController {
|
|
||||||
private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
||||||
//@Autowired
|
|
||||||
private final DeviceInfoService deviceInfoService;
|
|
||||||
@GetMapping("/test")
|
|
||||||
public Mono<String> test(){
|
|
||||||
return Mono.just("测试用例");
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/delay")
|
|
||||||
public Mono<String> delay(){
|
|
||||||
Mono<String> from = Mono.fromSupplier(()->{
|
|
||||||
try{
|
|
||||||
Thread.sleep(5000);
|
|
||||||
}catch (Exception e){
|
|
||||||
log.info("休眠错误");
|
|
||||||
}
|
|
||||||
return "休眠五秒后的时间:" + LocalDateTime.now();
|
|
||||||
});
|
|
||||||
log.info("现在时间:" + LocalDateTime.now());
|
|
||||||
return from;
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/flux")
|
|
||||||
public Flux<String> testFlux(){
|
|
||||||
return Flux.just("flux测试");
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/flux/delay")
|
|
||||||
public Flux<String> testFluxDelay(){
|
|
||||||
Flux<String> flux = Flux.fromStream(IntStream.range(1, 6).mapToObj(i -> {
|
|
||||||
try{
|
|
||||||
Thread.sleep(1000);
|
|
||||||
}catch (Exception e){
|
|
||||||
log.info("休眠错误");
|
|
||||||
}
|
|
||||||
return "休眠后的时间:" + LocalDateTime.now();
|
|
||||||
}));
|
|
||||||
logger.info("现在时间:" + LocalDateTime.now());
|
|
||||||
return flux;
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/post")//请求数据示例:{"aaa":"bbb"}
|
|
||||||
public Mono<String> postDemo(@RequestBody Mono<Map<String, Object>> contextMono){
|
|
||||||
Mono<String> mono =contextMono.map(item->{
|
|
||||||
for (Object o:item.values()
|
|
||||||
) {
|
|
||||||
log.info("接受到的信息{}", o);
|
|
||||||
}
|
|
||||||
return "1234";//返回结果
|
|
||||||
});
|
|
||||||
|
|
||||||
return mono;
|
|
||||||
}
|
|
||||||
@PostMapping("/post/demo")//请求数据示例:{"name":"bbb","id":123}
|
|
||||||
|
|
||||||
public Mono<DemoReq> postTest(@RequestBody Mono<DemoReq> contextMono){
|
|
||||||
Mono<DemoReq> mono =contextMono.map(item->{
|
|
||||||
log.info("接收到的对象:{}", item);
|
|
||||||
item.setId(456l);
|
|
||||||
item.setName("gaibian");
|
|
||||||
return item;//返回结果
|
|
||||||
});
|
|
||||||
|
|
||||||
return mono;
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/device/{id}")
|
|
||||||
public Mono<DeviceInfoEntity> getDeviceById(@PathVariable Long id){
|
|
||||||
return deviceInfoService.selectDeviceInfoById(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/nlp")
|
|
||||||
public Mono<Nlp> getNlp(@RequestParam String value){
|
|
||||||
LacNlp lacNlp = new LacNlp();
|
|
||||||
return lacNlp.geSingletNlp(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/nlps")
|
|
||||||
public Mono<List<Nlp>> getNlp(){
|
|
||||||
List<String> values = new ArrayList<>();// {"", ""};
|
|
||||||
values.add("我的未来不是梦");
|
|
||||||
values.add("AI是大势所趋");
|
|
||||||
LacNlp lacNlp = new LacNlp();
|
|
||||||
return lacNlp.getNlp(values);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -28,6 +28,11 @@
|
|||||||
<artifactId>iot-third</artifactId>
|
<artifactId>iot-third</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.qiuguo.iot</groupId>
|
||||||
|
<artifactId>iot-rabbit</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
|||||||
@ -7,9 +7,9 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|||||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||||
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
||||||
|
|
||||||
@SpringBootApplication(scanBasePackages = {"com.qiuguo.iot.user.api", "com.qiuguo.iot.data.service","com.qiuguo.iot.third.service"})
|
@SpringBootApplication(scanBasePackages = {"com.qiuguo.iot.user.api", "com.qiuguo.iot.data.service","com.qiuguo.iot.third.service","com.qiuguo.iot.rabbit.service"})
|
||||||
@EnableEasyormRepository(value = "com.qiuguo.iot.data.entity.*")
|
@EnableEasyormRepository(value = "com.qiuguo.iot.data.entity.*")
|
||||||
@ConnectorScan(basePackages = "com.qiuguo.iot.third.service")
|
@ConnectorScan(basePackages = {"com.qiuguo.iot.third.service"})
|
||||||
@EnableAspectJAutoProxy
|
@EnableAspectJAutoProxy
|
||||||
@EnableDiscoveryClient
|
@EnableDiscoveryClient
|
||||||
public class IotBoxUserApiApplication {
|
public class IotBoxUserApiApplication {
|
||||||
|
|||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.qiuguo.iot.user.api.config;
|
||||||
|
|
||||||
|
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
|
||||||
|
import org.springframework.amqp.support.converter.MessageConverter;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class MyMsgConverter {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public MessageConverter messageConverter(){
|
||||||
|
return new Jackson2JsonMessageConverter();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
package com.qiuguo.iot.user.api.controller.mq;
|
||||||
|
|
||||||
|
import com.qiuguo.iot.data.constants.YunxiRabbitConst;
|
||||||
|
import com.qiuguo.iot.data.entity.user.UserHomeEntity;
|
||||||
|
import com.qiuguo.iot.third.service.MqService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author simon
|
||||||
|
* @date 2023/9/25
|
||||||
|
* @description
|
||||||
|
**/
|
||||||
|
@RestController
|
||||||
|
@Slf4j
|
||||||
|
@RequestMapping("/mq")
|
||||||
|
public class MqController {
|
||||||
|
@Autowired
|
||||||
|
private MqService mqService;
|
||||||
|
|
||||||
|
@GetMapping("/sendMsg")
|
||||||
|
public Mono<Boolean> sendMsg() {
|
||||||
|
UserHomeEntity userHomeEntity = new UserHomeEntity();
|
||||||
|
userHomeEntity.setUserId(1L);
|
||||||
|
userHomeEntity.setHomeName("小米的家");
|
||||||
|
userHomeEntity.setUserId(System.currentTimeMillis());
|
||||||
|
|
||||||
|
return mqService.sendMessageWithConfirmation(YunxiRabbitConst.EXCHANGE_YUNXI_EVENT, YunxiRabbitConst.ROUTE_KEY_YUNXI, userHomeEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
package com.qiuguo.iot.user.api.listener;
|
||||||
|
|
||||||
|
import com.qiuguo.iot.data.constants.YunxiRabbitConst;
|
||||||
|
import com.rabbitmq.client.AMQP;
|
||||||
|
import com.rabbitmq.client.Channel;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.amqp.core.Message;
|
||||||
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author simon
|
||||||
|
* @date 2023/9/26
|
||||||
|
* @description
|
||||||
|
**/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class YunxiListener {
|
||||||
|
@RabbitListener(queues = YunxiRabbitConst.QUEUE_YUNXI)
|
||||||
|
public void processYunxiQueue(Channel channel, Message message) throws IOException {
|
||||||
|
String messageContent = new String(message.getBody(), "UTF-8");
|
||||||
|
System.out.println("YunxiListener msg " + messageContent);
|
||||||
|
|
||||||
|
//手动消息确认 配置需开启 acknowledge-mode: manual
|
||||||
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,6 +4,25 @@ spring:
|
|||||||
port: 31043
|
port: 31043
|
||||||
username: admin
|
username: admin
|
||||||
password: 123456
|
password: 123456
|
||||||
|
listener:
|
||||||
|
simple:
|
||||||
|
# retry:
|
||||||
|
# # 开启重试机制
|
||||||
|
# enabled: true
|
||||||
|
# # 重试次数
|
||||||
|
# max-attempts: 5
|
||||||
|
# # 重试最大间隔时间
|
||||||
|
# max-interval: 100000
|
||||||
|
# # 重试初始间隔时间
|
||||||
|
# initial-interval: 100
|
||||||
|
# # 间隔时间因子
|
||||||
|
# multiplier: 20
|
||||||
|
# 设置手动ack回复
|
||||||
|
acknowledge-mode: manual
|
||||||
|
#设置消息发送回调
|
||||||
|
publisher-returns: true
|
||||||
|
publisher-confirm-type: simple
|
||||||
|
virtual-host: /iot
|
||||||
|
|
||||||
cloud:
|
cloud:
|
||||||
# config:
|
# config:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user