RabbitMQ реализация протокола AMQP - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть проблема, так что вы можете мне помочь. Является экземпляром класса AmqpTemplate из RabbitMQ (реализация протокола AMQP) потокобезопасным. Можно ли получить доступ из нескольких потоков?

Спасибо

1 Ответ

3 голосов
/ 21 сентября 2011

AmqpTemplate - это интерфейс, а RabbitTemplate - это реализация, и я предполагаю, что под «поточно-ориентированным» вы подразумеваете, что его методы send / receive / sendAndReceive могут использоваться одновременно. Если так, то ДА. Единственное состояние, которое он поддерживает в переменных экземпляра, - это стратегии «конвертера» для Message и MessageProperties, а также настройки Exchange, Queue и Routing Key по умолчанию (которые даже не используются, если вы вызываете методы, которые принимают их в качестве аргументов вместо этого), и все они, как правило, настраиваются один раз изначально (например, с помощью внедрения зависимости). Шаблон не поддерживает нелокальное состояние для какой-либо конкретной операции во время выполнения. С AMQP «Канал» является экземпляром, который может использоваться только одним потоком за раз, и RabbitTemplate управляет этим внутренне так, что каждая операция извлекает канал для использования в рамках этой операции. Поэтому несколько одновременных операций приводят к использованию нескольких экземпляров Channel, но это не то, о чем вам следует беспокоиться как конечному пользователю шаблона.

Надеюсь, это поможет. -Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...