RabbitMQ实现AMQP协议

时间:2011-09-15 11:31:32

标签: rabbitmq

我有一些问题,所以你可以帮助我。是来自RabbitMQ(AMQP协议的实现)线程安全的AmqpTemplate类的实例。可以从多个线程访问吗?

由于

1 个答案:

答案 0 :(得分:3)

AmqpTemplate是接口,RabbitTemplate是实现,我假设“线程安全”你的意思是它的发送/接收/ sendAndReceive方法可以同时使用。如果是,那么是。它在实例变量中维护的唯一状态是Message和MessageProperties的“转换器”策略以及默认的Exchange,队列和路由键设置(如果您调用将这些作为参数的方法,则甚至不使用它们),以及所有这些通常最初配置一次(例如,通过依赖注入)。对于运行时的任何特定操作,模板不维护任何非本地状态。对于AMQP,“Channel”是一次只能由一个线程使用的实例,RabbitTemplate在内部对其进行管理,以便每个操作都检索要在该操作范围内使用的Channel。因此,多个并发操作会导致使用多个Channel实例,但这不是您需要担心的模板最终用户。

希望有所帮助。 -Mark