Мы думаем о внедрении подхода AMQP для нашей инфраструктуры микросервиса (хореография). У нас есть несколько услуг, скажем, обслуживание клиентов, обслуживание пользователей, сервис статей и т.д. Мы планируем внедрить RabbitMQ в качестве нашей центральной системы обмена сообщениями.
Я ищу лучшие практики для разработки системы по темам/очередям и т.д. Один из вариантов - создать очередь сообщений для каждого отдельного события, которое может произойти в нашей системе, например:
user-service.user.deleted
user-service.user.updated
user-service.user.created
...
Я думаю, что это неправильный подход для создания сотен очередей сообщений, не так ли?
Я хотел бы использовать Spring и эти красивые аннотации, например, например:
@RabbitListener(queues="user-service.user.deleted")
public void handleEvent(UserDeletedEvent event){...
Не лучше ли просто иметь что-то вроде "уведомлений о пользователях" как одну очередь, а затем отправлять все уведомления в эту очередь? Я все равно хотел бы зарегистрировать слушателей только подмножество всех событий, так как решить это?
Мой второй вопрос: если я хочу слушать в очереди, которая раньше не была создана, я получу исключение в RabbitMQ. Я знаю, что могу "объявить" очередь с помощью AmqpAdmin, но должен ли я делать это для каждой очереди моих сотен в каждом микросервисе, так как всегда может случиться, что очередь не была создана до сих пор?