RabbitMQ ConfirmListener 线程安全
RabbitMQ ConfirmListener thread safety
使用 RabbitMQ 的官方 java API,一旦我有了 Channel
class 的实例,我就可以通过调用 theChannel.confirmSelect()
将其置于发布者确认模式。这只是将通道置于确认模式。为了实际接收确认,看来我必须添加一个 ConfirmListener
的实例。这是通过调用 theChannel.addConfirmListener(x)
完成的,其中 x
是我的 ConfirmListener
实例。
我的问题是,我的 ConfirmListener
实例是在哪个线程上调用的?我似乎无法从文档中弄清楚这一点。
RabbitMQ Java 客户端源已发言:在处理 rabbitmq 网络框架的同一线程中:
查看调用层次结构:
ConfirmListener.handleAck(long, boolean) (com.rabbitmq.client)
ChannelN.callConfirmListeners(Command, Ack) (com.rabbitmq.client.impl)
ChannelN.processAsync(Command) (com.rabbitmq.client.impl)
AMQChannel.handleCompleteInboundCommand(AMQCommand) (com.rabbitmq.client.impl)
AMQChannel.handleFrame(Frame) (com.rabbitmq.client.impl)
MainLoop in AMQConnection.run()(2 usages) (com.rabbitmq.client.impl)
使用 RabbitMQ 的官方 java API,一旦我有了 Channel
class 的实例,我就可以通过调用 theChannel.confirmSelect()
将其置于发布者确认模式。这只是将通道置于确认模式。为了实际接收确认,看来我必须添加一个 ConfirmListener
的实例。这是通过调用 theChannel.addConfirmListener(x)
完成的,其中 x
是我的 ConfirmListener
实例。
我的问题是,我的 ConfirmListener
实例是在哪个线程上调用的?我似乎无法从文档中弄清楚这一点。
RabbitMQ Java 客户端源已发言:在处理 rabbitmq 网络框架的同一线程中:
查看调用层次结构:
ConfirmListener.handleAck(long, boolean) (com.rabbitmq.client)
ChannelN.callConfirmListeners(Command, Ack) (com.rabbitmq.client.impl)
ChannelN.processAsync(Command) (com.rabbitmq.client.impl)
AMQChannel.handleCompleteInboundCommand(AMQCommand) (com.rabbitmq.client.impl)
AMQChannel.handleFrame(Frame) (com.rabbitmq.client.impl)
MainLoop in AMQConnection.run()(2 usages) (com.rabbitmq.client.impl)