我正在构建一个应用程序,其中微服务通过RabbitMQ(请求-响应模式)进行通信
一切正常,但我仍然有一个错误“远程服务中没有定义匹配的消息处理程序。”-
当我向客户端应用程序发送帖子时,它只需通过客户端(ClientProxy)发送包含数据的消息,消费者应用程序就会响应。此功能实际上可以工作,但始终只能第二次使用。我知道这听起来很奇怪,但在我的第一个POST请求中,总是有来自客户的错误,我的每一个POST请求都能正常工作。然而,在我的整个应用程序中,这个问题无处不在,所以特定的POST请求只是一个例子
以下是代码:
客户:
@Post('devices')
async pushDevices(
@Body(new ParseArrayPipe({ items: DeviceDto }))
devices: DeviceDto[]
) {
this.logger.log('Devices received');
return this.client.send(NEW_DEVICES_RECEIVED, devices)
}
消费者:
@MessagePattern(NEW_DEVICES_RECEIVED)
async pushDevices(@Payload() devices: any, @Ctx() context: RmqContext) {
console.log('RECEIVED DEVICES');
console.log(devices);
const channel = context.getChannelRef();
const originalMsg = context.getMessage();
channel.ack(originalMsg);
return 'ANSWER';
}
客户端的RMQ设置为queueOptions:{持久:true},而消费者的queueOptions:{持久:true}设置为noAck:false,请确定问题的原因?我尝试用JSON发送数据。字符串化并将消息结构更改为{数据:设备},但错误仍然存在。
我今天遇到了同样的问题,在网上找不到任何解决方案,偶然发现了你的问题。我以一种黑客的方式解决了这个问题,但不确定当应用程序扩展时它会如何运行。
我基本上在producer微服务本身的控制器中添加了一个@EventPattern(在您的例子中是@MessagePattern)。我打电话给客户。emit()函数两次。
因此,本质上,它第一次被生产者本身的函数所消费,第二次发射实际上是给实际消费者的。这样一来,只需一个电话就足够了。
生产者控制器:
@EventPattern('video-uploaded')
async test() {
return 1;
}
我在不使用RabbitMQ时出错。除了与RabbitMQ相关的错误消息之外,我在网上几乎找不到任何帮助。
对我来说,这是一个问题,我从我的微服务控制器中的另一个微服务导入DTO。我的微服务中有一个新的DTO,它的名称与另一个微服务中的名称相似。我不小心从自动列表中选错了一个。
由于没有任何真正的指标表明我的构建很糟糕,只有这个错误,我想与大家分享一下,以防其他人也犯了我犯的同样的错误。
我也有同样的错误,今天终于解决了。
在我的项目中,有一个api网关作为混合应用程序来接收请求并将数据传递给其他系统,每秒钟请求都会出现如下错误。
错误:远程服务中没有定义匹配的消息处理程序。
然后我尝试删除下面代码中的api网关混合应用程序范围,错误消失了,希望这能帮助您解决这个问题。
// api-gateway main.ts
const app = await NestFactory.create(AppModule);
// run as a hybrid app —→ remove it
app.connectMicroservice({
transport: Transport.RMQ,
noACK: false,
options: {
urls: [`amqp://${rmqUser}:${rmqPassword}@127.0.0.1:5672`],
queue: 'main_queue',
queueOptions: {
durable: false,
},
},
});
// run hybrid app
await app.startAllMicroservices(); —→ remove it
await app.listen(3000);
版本 维特。x核心:3.5.0 vert. x redis客户端:3.5.0 上下文 2018-06-02 17:40:55.981错误4933---[ntlop-thread-2]io.vertx.redis.impl.重新连接:没有处理程序等待消息:14751915 2018-06-02 17:41:10.937错误4933---[ntloop-thread-2]io。维特斯。雷迪斯。impl
我试图通过使用Jms Qpid客户端的Spring Boot应用程序使用Apache Qpid。我可以对其进行配置,但当我尝试从队列接收消息时,记录器正在打印: 这是我的代码: JMS配置。Java语言 应用属性 schduledTask.java它只是按间隔运行发送和接收消息。
我正在使用netty构建一个应用程序。在应用程序中,我需要处理传入和传出的消息。要求是应用程序将发送的任何消息都应由特定的处理程序处理,进入应用程序的任何消息都应由另一个特定的处理程序处理。但是,我希望在两个处理程序之间交换消息,以便能够跟踪发送的消息响应,因为请求消息也将发送到应用程序。 请任何想法hwo实施这样的要求。这个问题听起来可能不相关,但这就是我得到的,我还不是一个网络极客。我读到的关
我需要检查是否一个url是有效的和空值是可接受的以及。我是这个图书馆的新手,被这个错误难倒了。
我正在homedepot.com练习,现在我有这样的问题卡住了,错误信息是:“Arity不匹配:步骤定义'StepsTestCase.SearchShoppingStep.click文件中的_close_button_in_add_to_cart_window(WebDriver):/C:/用户/管理员/git/MavenProject/目标/类/'带有模式[^在添加到购物车窗口中单击关闭按钮$]