emirkljucanin
emirkljucanin

Reputation: 814

Multiple consumers with the same name in different projects subscribed to the same queue

We have UserCreated event that gets published from UserManagement.Api. I have two other Apis, Payments.Api and Notification.Api that should react to that event.

In both Apis I have public class UserCreatedConsumer : IConsumer<UserCreated> (so different namespaces) but only one queue (on SQS) gets created for both consumers.

What is the best way to deal with this situation?

Upvotes: 0

Views: 1494

Answers (2)

Chris Patterson
Chris Patterson

Reputation: 33298

You didn't share your configuration, but if you're using:

x.AddConsumer<UserCreatedConsumer>();

As part of your MassTransit configuration, you can specify an InstanceId for that consumer to generate a unique endpoint address.

x.AddConsumer<UserCreatedConsumer>()
    .Endpoint(x => x.InstanceId = "unique-value");

Upvotes: 1

Alexey Zimarev
Alexey Zimarev

Reputation: 19630

Every separate service (not an instance of the same service) needs to have a different queue name of the receiving endpoint, as described in the docs:

cfg.ReceiveEndpoint("queue-name-per-service-type", e =>
{
    // rest of the configuration
});

It's also mentioned in the common mistakes article.

Upvotes: 1

Related Questions