Да, RabitMQ поддерживает несколько издателей и потребителей.
Несколько издателей
Для публикации сообщения на rabbitmq вам необходимо объявить фабрику и установить соединение с сервером rabbitmq.
затем декантируйте кеннел к кролику
ConnectionFactory FACTORY = new ConnectionFactory
FACTORY.setUsername ("guest")
FACTORY.setPassword ("guest")
FACTORY.setVirtualHost ("\")
FACTORY.setPort (5572)
FACTORY.setHost ("localhost")
Соединение соединение = FACTORY.newConnection
Канал канала = connection.createChannel
основным ключом для маршрутизации сообщения является ключ маршрутизации
channel.basicPublish(EXCHANGE_NAME, "Queue1", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg1".getBytes)
channel.basicPublish(EXCHANGE_NAME, "Queue2", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg2".getBytes)
эти два сообщения будут опубликованы в отдельной очереди в соответствии с ключом маршрутизации, как указано в queue1 и queue2
2. Многократный потребитель
для нескольких потребителей мы объявляем очередь и привязываемся к определенному ключу маршрутизации
сообщение на этот ключ маршрутизации будет опубликовано в соответствующей очереди.
channel.exchangeDeclare(EXCHANGE_NAME, "direct", durable)
channel.queueDeclare("q1", durable, false, false, null)
channel queueBind ("q1", EXCHANGE_NAME,"queue1")// routing key = "queue1"
val q1Consumer = new QueueingConsumer(channel)
channel basicConsume ("q1", false, q1Consumer)
вот так вы можете получать сообщения из первой очереди
и то же самое относится ко второй очереди, но укажите ключ маршрутизации как «queue2»
channel.exchangeDeclare(EXCHANGE_NAME, "direct", durable)
channel.queueDeclare("q2", durable, false, false, null)
channel queueBind ("q2", EXCHANGE_NAME,"queue2") // routing key = "queue2"
val q2Consumer = new QueueingConsumer(channel)
channel basicConsume ("q2", false, q2Consumer)