Я хочу знать, что произойдет, когда мы получим ACK. Получаем ли мы ACK в одном потоке или во многих потоках?
Do handleAck и методы handleNack используются одной нитью или многими потоками? Если они используются одним потоком, тогда все в порядке. Но если они используются несколькими потоками, мы должны построить наш код в потоковом безопасном режиме.Должен ли быть синхронизирован клиент ConfirmListener в Java RabbitMQ?
ответ
Вы не должны написать свой код ConfirmListener
поточно-но не потому, что ack
и nack
методы не будут вызываться из нескольких потоков, но потому, что вы не должны разделять Channel
между нитями, чтобы начать с.
documentation конкретно называет это:
В то время как некоторые операции по каналам безопасны для вызова одновременно, некоторые из них и не будет приводить к неправильному кадра перемежения на провода. Совместное использование каналов между потоками также будет мешать * Издатель подтверждает.
Когда вы публикуете брокера, просто не передавайте канал. Каналы легкие и не так дорогие в создании. Таким образом, вам не нужно беспокоиться об подтверждениях.
Если вы действительно разделяете канал, ваши подтверждения будут помешаны в соответствии с приведенной выше цитатой.
- 1. RabbitMQ ConfirmListener thread safety
- 2. Почему вектор в Java должен быть синхронизирован?
- 3. Должен ли быть синхронизирован вызов функции потокобезопасности?
- 4. , какой метод должен быть синхронизирован в шаблоне делегирования в Java
- 5. Как судить, какой объект должен быть синхронизирован в java-потоке?
- 6. Как решить, что метод должен быть синхронизирован
- 7. Почему метод gets() в Семафорах не должен быть синхронизирован?
- 8. Должен быть синхронизирован getter и setter в поле String потока/
- 9. Механизм конфигурации для флага атрибутов объекта, который должен быть синхронизирован
- 10. Новое соединение не создается java-клиент rabbitmq
- 11. Синхронизирован «глубоко» в java?
- 12. git master branch должен быть синхронизирован с какой средой ...?
- 13. Повышение производительности RabbitMQ публиковать (# клиент RabbitMQ C)
- 14. Java - синхронизирован геттер
- 15. Java синхронизирован по атомной операции
- 16. Клиент RabbitMQ, зависающий в канале.close() и connection.close()
- 17. Как узнать, синхронизирован ли удаленный клиент синхронизации BitTorrent
- 18. правила ненавязчивые проверки клиент должен быть уникальным
- 19. Java синхронизирован - правильно ли я делаю это?
- 20. Java синхронизирован, кажется, проигнорирован
- 21. Java синхронизирован и происходит до
- 22. node.js клиент-клиент для rabbitmq (реализует темы (ExcahangeName))
- 23. синхронизирован метод коллекции toArray() синхронизирован?
- 24. Должен ли Java быть установлен для запуска приложения Java?
- 25. должен ли java doc быть на каждом java-методе
- 26. Ошибка RabbitMQ SSL - каков должен быть путь к сертификатам?
- 27. Ошибка RabbitMQ при запуске - erlexec: HOME должен быть установлен
- 28. RabbitMQ. Java-клиент. Можно ли подтвердить сообщение не в том же потоке, которое было получено?
- 29. Должен ли внутренний класс быть статическим в Java?
- 30. Должен ли класс IOException в Java быть неконтролированным RuntimeException?