2011-09-15 73 views
0

我有一些問題,所以你可以幫助我。是RabbitMQ(實現AMQP協議)線程安全的AmqpTemplate類的實例。它可以從多個線程訪問嗎?RabbitMQ實施AMQP協議

感謝

+0

AmqpTemplate部分是什麼包?它不在Java或.NET客戶端中。 – scvalex

+0

下面是關於AmqpTemplate的一些參考,並且沒有關於線程安全的內容:http://static.springsource.org/spring-amqp/docs/1.0.x/apidocs/ – ttokic

+0

Mhm。你說的沒錯。嘗試在RabbitMQ討論郵件列表上發佈問題:https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss – scvalex

回答

3

AmqpTemplate是接口,並且RabbitTemplate是實現了,我的假設「線程安全的」你的意思是它的發送/接收/ sendAndReceive方法可以同時使用。如果是這樣,那麼是的。它在實例變量中維護的唯一狀態是Message和MessageProperties的「轉換器」策略以及默認的Exchange,Queue和Routing Key設置(如果調用以那些參數爲參數的方法,甚至不會使用它們),以及所有這些通常最初配置一次(例如通過依賴注入)。運行時模板不會爲任何特定操作維護任何非本地狀態。使用AMQP,「通道」是一次只能由一個線程使用的實例,RabbitTemplate在內部管理它,以便每個操作都檢索要在該操作範圍內使用的通道。因此,多個併發操作會導致使用多個Channel實例,但這並不是您作爲模板的最終用戶需要擔心的事情。

希望有所幫助。 -Mark