Kpo*_*oke 5 rabbitmq node.js microservices nestjs
我正在尝试使用 RabbitMq 从 NestJs 微服务调用特定函数,但无法使用 nodejs 命中特定消息模式。
我尝试从控制器文件访问的消息模式
@MessagePattern('signin')
async signin(
@Payload(ValidationPipe) signInCredentialsDto: SignInCredentialsDto,
@Ctx() context: RmqContext,
): Promise<{ accessToken: string }> {
this.logger.verbose('Signing in ' + JSON.stringify(signInCredentialsDto));
// const result = await this.authService.userSignin(signInCredentialsDto);
// const channel = context.getChannelRef();
// const originalMsg = context.getMessage();
// channel.ack(originalMsg);
return {
accessToken: 'works',
};
}
Run Code Online (Sandbox Code Playgroud)
我的 NestJsrabbitmq 连接详细信息
async function bootstrap() {
const logger = new Logger('Main');
const app = await NestFactory.createMicroservice<MicroserviceOptions>(
AppModule,
{
transport: Transport.RMQ,
options: {
urls: ['amqp://localhost:5672'],
queue: 'rebus_queue',
queueOptions: {
durable: false,
},
},
},
);
app.listen(() => {
logger.log('Auth Microservice Started Successfully');
});
}
bootstrap();
Run Code Online (Sandbox Code Playgroud)
我的nodejs客户端代码:
amqp.connect("amqp://localhost:5672", (error0, connection) => {
if (error0) throw error0;
connection.createChannel((error1, channel) => {
if (error1) throw error1;
channel.assertQueue("rebus_queue", {
durable: false,
});
app.get("/", (req: express.Request, res: express.Response) => {});
app.post(
"/auth/signin",
async (req: express.Request, res: express.Response) => {
channel.sendToQueue(
"rebus_queue",
Buffer.from(JSON.stringify(req.body))
);
}
);
});
});
Run Code Online (Sandbox Code Playgroud)
当我点击 /auth/signin 路线时,我成功点击了 Nestjs 微服务,但我不知道如何访问登录消息模式。
就目前情况而言,点击nodejs http端点会导致nestjs终端出现以下错误
[Server] There is no matching event handler defined in the remote service. Event pattern: undefined. +50026ms
Run Code Online (Sandbox Code Playgroud)
小智 2
我有一个 typecrit/express 发布者和一个 NestJS 订阅者;我认为这工作正常。
import amqplib from 'amqplib';
const payload = Buffer.from(JSON.stringify({
pattern: 'queue name',
data: 'your actual payload',
}));
...
channel.sendToQueue('my_queue_name', payload);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2368 次 |
| 最近记录: |