我正在尝试在我的项目中配置 @nestjs-sqs,但我正在获取
WARN [SqsService] No metadata found for: <QueueName>
我的模块是
Module({
imports: [
ConfigModule.forRoot( {} ),
SqsModule.registerAsync( {
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => {
const queueUrl = configService.get<string>('QUEUE_URL');
const region = configService.get<string>('REGION');
return {
consumers: [
{
name: "<QueueName>",
queueUrl,
region,
sqs: new AWS.SQS( {
credentials: new AWS.Credentials( {
accessKeyId: configService.get( "AWS_SQS_ACCESS_KEY_ID" ) || "",
secretAccessKey: configService.get( "AWS_SQS_SECRET_ACCESS_KEY" ) || "",
} ),
region: configService.get( "AWS_SQS_REGION" ),
} )
},
],
producers: [
{
name: "<QueueName>",
queueUrl,
region,
sqs: new AWS.SQS( {
credentials: new AWS.Credentials( {
accessKeyId: configService.get( "AWS_SQS_ACCESS_KEY_ID" ) || "",
secretAccessKey: configService.get( "AWS_SQS_SECRET_ACCESS_KEY" ) || "",
} ),
region: configService.get( "AWS_SQS_REGION" ),
} )
},
],
};
},
inject: [ConfigService],
} ),
],
我正在通过如下
ProducerService
发送消息
@Injectable()
export class ProducerService {
constructor( private readonly sqsService: SqsService, private configService: ConfigService ) {}
private queueName = "<QueueName>";
async sendMessage( body: unknown, groupId: string ) { ... }
我尝试将 SQS 配置(访问密钥、访问 ID)直接注入模块,但没有成功。此外,我还尝试删除访问密钥,但也没有用。
我期待使用
.env
文件变量异步注册 SQS 模块。