小编Nil*_*orn的帖子

Feign Client 上的“身体参数太多”异常

我正在使用 Springs Feign Client 功能从一个微服务到另一个微服务进行通信。

现在,被调用的服务公开了一个接受文件和相关 (JSON) 对象的 REST 接口。

@RequestMapping(value = {CONVERT_PATH, APPLICATION_PATH + CONVERT_PATH}, method = RequestMethod.POST, produces = CONTENT_TYPE)
    public ResponseEntity<InputStreamResource> convert(@RequestPart("file") MultipartFile file, @RequestParam("input") Input in) {...}
Run Code Online (Sandbox Code Playgroud)

这个接口运行良好,我已经通过从不同的来源向它发送一个有效的多部分/混合实体来验证这一点。

然后,在我的其他服务中,我设置了一个匹配的假客户端来使用这个接口:

@FeignClient("convert")
public interface ConvertClient {
    @RequestMapping(value = CONVERT_PATH, method = RequestMethod.POST, consumes = "multipart/mixed")
    ResponseEntity<InputStreamResource> convert(@RequestPart("file") MultipartFile file, @RequestPart("input") Input in);
}
Run Code Online (Sandbox Code Playgroud)

同样,从一个服务到另一个服务的连接正在工作,我已经在 feign 客户端(一个不使用多个部分)中使用不同的请求接口验证了这一点。

当我尝试使用此特定接口方法构建(客户端)服务时,出现以下异常:

FactoryBean threw exception on object creation; 
nested exception is java.lang.IllegalStateException: Method has too many Body parameters: 
public abstract org.springframework.http.ResponseEntity <..>.feign.ConvertClient.convert(org.springframework.web.multipart.MultipartFile,<..>.Input)
Run Code Online (Sandbox Code Playgroud)

有什么我可以做的吗?正如我所说的,它可以到达 …

java rest spring netflix-feign

5
推荐指数
1
解决办法
9858
查看次数

NestJS MQTT 微服务的有效@MessagePattern 是什么?

我正在尝试根据文档使用 NestJS 设置 MQTT 微服务。

我已经使用 Docker 启动了一个有效的 Mosquitto Broker,并使用各种 MQTT 客户端验证了它的可操作性。现在,当我启动 NestJS 服务时,它似乎连接正确(mqqt.fx 显示新客户端),但我无法在我的控制器中接收任何消息。这是我的引导,就像在文档中一样:

主文件

async function bootstrap() {
    const app = await NestFactory.createMicroservice(AppModule, {
        transport: Transport.MQTT,
        options: {
            host: 'localhost',
            port: 1883,
            protocol: 'tcp'
        }
    });
    app.listen(() => console.log('Microservice is listening'));
}
bootstrap();
Run Code Online (Sandbox Code Playgroud)

app.controller.ts

@Controller()
export class AppController {

    @MessagePattern('mytopic') // tried {cmd:'mytopic'} or {topic:'mytopic'}
    root(msg: Buffer) {
        console.log('received: ', msg)
    }
}
Run Code Online (Sandbox Code Playgroud)

我是否错误地使用了消息模式装饰器,或者我对 NestJS MQTT 微服务甚至应该做什么的概念有误?我认为它可能会订阅我传递给装饰器的主题。我唯一的其他信息来源是相应的单元测试

node.js mqtt typescript microservices nestjs

5
推荐指数
1
解决办法
6170
查看次数

标签 统计

java ×1

microservices ×1

mqtt ×1

nestjs ×1

netflix-feign ×1

node.js ×1

rest ×1

spring ×1

typescript ×1